防止非多态c++基类的实例化
Prevent instantiation of base class that is not polymorphic c++
我有一个基类,它不是多态的,但我想防止它被实例化。我应该给这个基类一个纯虚析构函数来防止它被实例化吗?但是,给非多态基类一个虚拟析构函数是错误的还是不好的做法?
为了防止基类被实例化,将所有构造函数设置为protected
.
将tor/dr保持在受保护范围内
c++中的基类建议使用虚析构函数。c++是一种非常古老的编程语言,在没有虚析构函数的情况下,派生类的对象可能会被部分或错误地析构。
当然,一个纯虚析构函数会阻止创建这个类的任何实例,但是我认为,为了清楚地表明你不希望这个类被实例化,你也可以创建构造函数protected
,正如@Niels在他的回答中指出的那样。
相关文章:
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- C++包括类名间距和类实例化
- 从基类实例调用派生类方法而不进行强制转换
- 虚拟基类初始化
- 如何使用其中一个具体类实例化抽象类?
- 不带尖括号的模板类实例化
- 使用父类实例化的向下转换对象
- 模板类实例化中的指针转换无效
- 在C++中,为什么仅包含与其基类实例的联合的派生类占用的内存多于联合的大小?
- 类的私有成员在我的类实例化期间更改,即使他们不应该
- 反向函数不反转类实例化的引用字符串
- 在类实例化时生成一个数字
- 谷歌测试 - 为模板类实例化生成值
- 如何防止在基类初始化器中调用默认构造函数?
- 使用派生类实例化基类,而不在对象定义中使用指针
- 模板类实例化如何与类继承协同工作
- 派生类实例共享同一基类实例
- 枚举器而不是用于类实例化的构造函数
- 从基类模板化列表中实例化子类对象
- c++中多态性基类和继承类实例化的问题