防止实例化非多态c ++的基类

时间:2015-07-21 10:50:21

标签: c++ instantiation

我有一个非多态的基类,但我想阻止它被实例化。 我应该给这个基类一个纯虚拟析构函数来阻止它被实例化吗? 但是,为非多态基类提供虚拟析构函数是错误还是不好?

3 个答案:

答案 0 :(得分:14)

为了防止实例化基类,请使所有构造函数protected

答案 1 :(得分:1)

将ctor / dtor保持在受保护的范围内。

答案 2 :(得分:-6)

建议使用C ++中的基类来运行虚拟析构函数。 C ++是一种非常古老的编程语言,如果没有虚拟析构函数,派生类的对象可能被部分或不正确地销毁。

当然,纯虚拟析构函数会阻止创建此类的任何实例,但我认为,为了明确表示您不希望实例化此类,您还可以创建构造函数{{ 1}},正如@Niels在他的回答中指出的那样。

希望这有帮助。