115.如何阻止一个类被实例化?有哪些方法?
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.不允许类外部创建类对象,只能在类内部创建对象