115.如何阻止一个类被实例化?有哪些方法?

发布时间 2023-07-12 21:50:16作者: CodeMagicianT

115.如何阻止一个类被实例化?有哪些方法?

1.将类定义为抽象基类或者将构造函数声明为private;

将类定义为抽象类:抽象类是不能被实例化的,只能被继承。通过将类定义为抽象类,可以防止该类被实例化。

class AbstractClass
{
public:
    virtual void abstractMethod() = 0; // 纯虚函数  
    // ...  
};

将类的构造函数声明为私有的:通过将类的构造函数声明为私有,可以防止外部代码直接调用该构造函数,从而阻止类的实例化。只有类的友元函数可以访问私有构造函数。

class Class 
{
private:
    Class() {} // 私有构造函数  
public:
    // ...  
};

2.抛出异常:在类的构造函数中抛出异常,可以在实例化过程中中断对象的创建,从而阻止类的实例化。

class Class 
{
public:
    Class() 
    {
        throw std::runtime_error("Cannot instantiate this class."); // 抛出异常  
    }
    // ...  
};

2.不允许类外部创建类对象,只能在类内部创建对象