spa*_*ger 1 c++ oop inheritance class c++11
假设我有一个类Bar。我想Bar唯一地用作基类,例如:
class Foo : public Bar
Run Code Online (Sandbox Code Playgroud)
我想禁止Bar能够被实例化。换句话说,我想Bar object;成为一个错误。这是可能的吗?
有可能的。您本质上是在问,如何创建一个抽象类。
在其他一些语言中,有一个说明符关键字可用于声明类抽象,但在 C++ 中没有。在 C++ 中,如果一个类至少有一个纯虚成员函数,那么它就是抽象的。
几乎总是,抽象类自然有一个纯虚函数供派生类实现,但如果你的基类没有,有一个技巧:将抽象类的析构函数声明为纯虚函数。
附注。请注意,与其他纯虚函数不同,析构函数必须始终有一个定义。