这道题如何编程(C++)

来源:百度知道 编辑:UC知道 时间:2024/06/30 04:42:55
定义一个类,确保该类实例化的对象数目最多只能有一个(用static数据成员和成员函数)
那个默认函数Singleton()设置为protected,不是违法的吗?还有,可以详细说一下那个思想吗?(初学者,不太明白)

术语这叫单件,Singleton。
简单的可以这么实现:
class Singleton {
public: //相当于你能从外部调用的只有这个函数
static Singleton* Instance();
protected: //这样可以避免任意产生Singleton对象
Singleton();
private: //这个是你能够获得的唯一Singleton对象的指针
static Singleton* _instance;
};

Singleton* Singleton::_instance = 0;
Singleton* Singleton::Instance() {
/* 这个是因为假如没有人调用Instance()的话,就可以不用建立这个唯一的Singleton对象了,效率比较高 */
if ( _instance == 0 ) {
_instance = new Singleton;
return _instance;
}

单件还有很多的变化,包括双检锁等,主要会考虑多线程、对象的生命周期等。是相当常用的一种设计模式。