«设计模式»中把 singleton 写成返回指针:
class singleton{ 【程序编程相关:传统无盘所存在的问题(4)】
【推荐阅读:网吧无盘问题(2)】static singleton* instance(); 【扩展信息:传统无盘所存在的问题(3)】public:protected:singleton();private:static singleton* _instance;};相应的实现 cpp 文件是:
singleton* singleton::_instance;
singleton* singleton::instance(){if( _instance == 0){_instance = new singleton;};return _instance;}将构造函数设计成 protected 的目的是防止在 class 外面 new ,有人可能会设计成 private ,如果考虑到有可能会继承这个类的话,还是将构造函数设计成 protected 比较好,还需要加一个 virtual 析构函数.为了防止别人复制 singleton 对象:
singleton* psingleton = singleton::instance();
singleton s1 = *psingleton;singleton s2 = *psingleton; 需要将拷贝构造(copy constructor)函数变成 private.但是这里存在的问题是,什么时候删除 singleton 对象?按照 c++ 的一个基本原则,对象在哪里创建就在哪里销毁,这里还应该放一个 destroy 方法来删除 singleton 对象.如果忘了删除就比较麻烦.... 下一页