阅读量:72
要防止C++单例类被拷贝,可以通过禁用拷贝构造函数和赋值操作符来实现。具体方法如下:
- 将拷贝构造函数和赋值操作符声明为私有成员函数,并不实现它们,这样在外部无法调用这些函数。
class Singleton {
private:
Singleton(const Singleton&);
Singleton& operator=(const Singleton&);
public:
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
// 其他成员函数
void doSomething() {}
};
- 或者将拷贝构造函数和赋值操作符定义为删除的函数,这样编译器会在尝试调用这些函数时报错。
class Singleton {
public:
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
// 其他成员函数
void doSomething() {}
private:
Singleton() {}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
通过以上方法,可以有效地防止C++单例类被拷贝,确保只有一个实例存在并且可以通过getInstance()方法获取该实例。