【发布时间】:2016-06-05 13:11:25
【问题描述】:
我已经看到构造函数、复制构造函数、析构函数和赋值运算符在典型的单例类中保持在私有范围内。例如
class CMySingleton
{
public:
static CMySingleton& Instance()
{
static CMySingleton singleton;
return singleton;
}
private:
CMySingleton() {} // Private constructor
~CMySingleton() {}
CMySingleton(const CMySingleton&); // Prevent copy-construction
CMySingleton& operator=(const CMySingleton&); // Prevent assignment
};
现在,我的问题是
为什么要将析构函数和赋值运算符保密 范围?是强制性的吗?
公共析构函数会破坏单例类的任何属性吗? 因为由于我们的对象构造受到限制所以没有 意外破坏的可能性。
我可以理解私有赋值运算符可以防止 self 赋值,但公共赋值运算符是否会伤害其他 比额外的运行时间?
【问题讨论】:
-
错误的问题。正确的问题是:为什么这个该死的愚蠢的单身人士首先存在?
-
@SergeyA:因为它在 GoF 的书中 :)