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

Prevent instantiation of base class that is not polymorphic c++

本文关键字:基类 实例化 c++ 多态      更新时间:2023-10-16

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

为了防止基类被实例化,将所有构造函数设置为protected .

将tor/dr保持在受保护范围内

c++中的基类建议使用虚析构函数。c++是一种非常古老的编程语言,在没有虚析构函数的情况下,派生类的对象可能会被部分或错误地析构。

当然,一个纯虚析构函数会阻止创建这个类的任何实例,但是我认为,为了清楚地表明你不希望这个类被实例化,你也可以创建构造函数protected,正如@Niels在他的回答中指出的那样。