首页 > 解决方案 > 如何创建一个无法实例化的类?

问题描述

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

我的想法是:

class abstract
{
  private:
    int foo;

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

但这真的不是我想的最佳实践......

是否有任何提示来构建概念,以使“我不知道应该将哪种方法设置为纯虚拟”的情况永远不会发生?

标签: c++

解决方案


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

class abstract
{
   private:
      int foo;

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

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


推荐阅读