单例模式

来源:互联网 发布:人工蜂群算法的流程图 编辑:程序博客网 时间:2024/05/21 19:49
单例模式可以说是最简单,最常见,也是最容易实现的了,但在C++编程中,单例却也有很多坑等着你,一不小心就会掉下去。

/*单例模式: *当我们的对象只有一个并且只能是一个时,就必须用到单例。 */#include <iostream>using namespace std;class Single{public:static Single* Create();void Destroy();private:// 单例是不能被实例化的,所以构造函数不能放在 public 里面Single(){}// 单例应当屏蔽掉拷贝构造,拷贝赋值这些功能Single(const Single& that){}Single& operator= (const Single& that){}~Single(){m_single = NULL;}static Single* m_single;// 添加计数功能,方便控制销毁

static unsigned int m_ret;};Single *Single::m_single = NULL;unsigned int Single::m_ret = 0;static Single *Single::Create(){if ( NULL == m_single ){m_single = new Single();}++m_ret;return m_single;}void Single::Destroy(){if (--m_ret == 0){delete this;}}int main(){Single *p1 = Single::Create();Single *p2 = Single::Create();Single *p3 = Single::Create();// ...p1->Destroy();p2->Destroy();p3->Destroy();return 0;}

0 0
原创粉丝点击