【发布时间】:2018-07-17 07:10:06
【问题描述】:
我正在用 C++ 实现 Singleton 类,我想知道是否有必要将复制构造函数和赋值运算符声明为私有,以防我有以下实现
class Singleton{
static Singleton* instance;
Singleton(){}
public:
static Singleton* getInstance();
};
Singleton* Singleton::instance = 0;
Singleton* Singleton::getInstance(){
if(instance == 0){
instance = new Singleton();
}
return instance;
}
似乎我只能拥有指向 Singleton 的指针,在这种情况下,复制构造函数也没用,operator= 也是如此。所以,我可以跳过将这些声明为私有,我错了吗?
【问题讨论】:
-
如果您不想要这些操作,或者它们对类无效/不正常,那么您应该
=delete;函数。