防止实例化不是多态 C++ 的基 class

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

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

为了防止基础 class 被实例化,使所有构造函数 protected.

C++ 中的基础 classes 建议使用虚拟析构函数。 C++ 是一种非常古老的编程语言,如果没有虚拟析构函数,派生对象 class 可能会被部分或错误地销毁。

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

希望对您有所帮助。

将 ctor/dtor 保留在保护范围内。