【发布时间】:2017-10-13 15:25:33
【问题描述】:
假设我有一个班级Bar。我想将Bar 唯一地用作基类,例如:
class Foo : public Bar
我想禁止 Bar 被实例化。换句话说,我希望Bar object; 是一个错误。这可以吗?
【问题讨论】:
-
受保护的构造函数?让它成为一个抽象类?
-
将条形抽象化?
-
抽象意味着定义一个纯虚函数(例如
virtual void fizz() = 0;)对吗?我不想这样做,因为我没有用例来拥有这样的功能。 -
是的,您确实有这样一个功能的用例。您的用例是“防止您的类被实例化”。无论如何,如果您将纯虚函数设为私有,那么没人会知道您拥有它。它将在您和编译器之间。
-
使用受保护的构造函数会更干净吗?例如。
class Foo { protected: Foo(); }
标签: c++ class oop c++11 inheritance