如何制作无法实例化的类?

时间:2019-04-05 16:27:21

标签: c++

我不希望可以创建此类的对象,但是在我的情况下,我不知道如何防止这种情况。

我实现这一目标的想法是:

class abstract
{
  private:
    int foo;

  public:
    abstract();
    virtual void useless_method_to_force_class_to_be_abstract() = 0;
    virtual ~abstract();
};

但这真的不是最佳实践……

有没有建立概念的技巧,以至于“我不知道应该为纯虚拟方法设置哪种方法”的情况永远不会发生?

1 个答案:

答案 0 :(得分:4)

无需引入不必要的virtual成员函数。使析构函数成为纯虚拟的。确保使构造函数protected允许构造派生类。同时,将析构函数也设为protected

class abstract
{
   private:
      int foo;

   protected:
      abstract();
      virtual ~abstract() = 0;
};

请注意,可以实现纯虚函数。对于析构函数,即使它们是纯虚拟的也必须实现。