c++ 中的singleton 类的实现讨论
【程序编程相关:MySQL管理员指南】 【推荐阅读:一个计算机高手的成长——推荐一读】ansi c++ 中的 singleton 实现说难不难,说容易也不容易,很多人写 ansi c++ 的 singleton class 都有错误.这篇文章讨论怎样在 ansi c++ 中写 singleton class, 希望对大家有帮助. 【扩展信息:MySql常用命令】«设计模式»中把 singleton 写成返回指针:
class singleton{
public: static singleton* instance(); 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++ 的一个基本原则,对象在哪里创建就在哪里销毁, ... 下一页