我不希望可以创建此类的对象,但是在我的情况下,我不知道如何防止这种情况。
我实现这一目标的想法是:
class abstract
{
private:
int foo;
public:
abstract();
virtual void useless_method_to_force_class_to_be_abstract() = 0;
virtual ~abstract();
};
但这真的不是最佳实践……
有没有建立概念的技巧,以至于“我不知道应该为纯虚拟方法设置哪种方法”的情况永远不会发生?
答案 0 :(得分:4)
无需引入不必要的virtual
成员函数。使析构函数成为纯虚拟的。确保使构造函数protected
允许构造派生类。同时,将析构函数也设为protected
。
class abstract
{
private:
int foo;
protected:
abstract();
virtual ~abstract() = 0;
};
请注意,可以实现纯虚函数。对于析构函数,即使它们是纯虚拟的也必须实现。