如何创建无法实例化的类

How do I make a class that cannot be instantiated?

本文关键字:实例化 何创建 创建      更新时间:2023-10-16

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

我的想法是:

class abstract
{
  private:
    int foo;
  public:
    abstract();
    virtual void useless_method_to_force_class_to_be_abstract() = 0;
    virtual ~abstract();
};

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

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

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

class abstract
{
   private:
      int foo;
   protected:
      abstract();
      virtual ~abstract() = 0;
};

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