如何在修改设计时停止现有代码基类的实例创建

How instance creation of base class of existing code can be stopped while modifying the design?

本文关键字:代码 基类 创建 实例 修改      更新时间:2023-10-16
class base {};
class der1 : public base{};
class der2 : public base{};
    ..........
    ..........
class derXXX : public base{};

有几个类是从基派生出来的。现有代码:基类不是抽象类,所以所有派生类都有基类的实例。所有的测试都完成了。

要求:现在我想停止基类的实例创建,而不需要对所有派生类进行任何更改/测试。怎样才能做到呢?

一个选项是让Base的每个构造函数都受保护,这样它们只能被派生类和类本身访问。这将阻止对象本身的实例化,但允许基类的实例化。

如果基类没有构造函数,则只需声明一个新的不带参数的空构造函数。另外,一定要提供复制构造函数的实现(或者保持未实现和私有),这样自动生成的复制构造函数就不会公开可见。

将所有的base类构造函数(包括默认构造函数和复制构造函数)设置为private或protected