我有一个非多态的基类,但我想阻止它被实例化。 我应该给这个基类一个纯虚拟析构函数来阻止它被实例化吗? 但是,为非多态基类提供虚拟析构函数是错误还是不好?
答案 0 :(得分:14)
为了防止实例化基类,请使所有构造函数protected
。
答案 1 :(得分:1)
将ctor / dtor保持在受保护的范围内。
答案 2 :(得分:-6)
建议使用C ++中的基类来运行虚拟析构函数。 C ++是一种非常古老的编程语言,如果没有虚拟析构函数,派生类的对象可能被部分或不正确地销毁。
当然,纯虚拟析构函数会阻止创建此类的任何实例,但我认为,为了明确表示您不希望实例化此类,您还可以创建构造函数{{ 1}},正如@Niels在他的回答中指出的那样。
希望这有帮助。