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

alf*_*a98 0 c++

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

我的想法是:

class abstract
{
  private:
    int foo;

  public:
    abstract();
    virtual void useless_method_to_force_class_to_be_abstract() = 0;
    virtual ~abstract();
};
Run Code Online (Sandbox Code Playgroud)

但这确实不是我认为的最佳实践......

是否有任何技巧可以构建一个概念,以便永远不会发生“我不知道应该将哪种方法设置为纯虚拟”的情况?

R S*_*ahu 5

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

class abstract
{
   private:
      int foo;

   protected:
      abstract();
      virtual ~abstract() = 0;
};
Run Code Online (Sandbox Code Playgroud)

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