首页 > 编程 > C++ > 正文

C++单例模式简单实现

2019-11-08 01:36:27
字体:
来源:转载
供稿:网友

单例模式就是。。只能有一个实例化。

像一个游戏中。你这个NPC只有一个。不能多次创建 大概酱紫

怎么弄呐

class A{

public:

static A*getInstance();//这个获取实例

PRivate:

A();

static A*m_Instace;

}

A* A::m_Instance=new A;//初始化

A*A::getInstance()

{

if(m_Instance)//实例还未创建则创建

m_Instance=new A;

return m_Instance;//返回实例

}

这样。简单的单例模式就出现了。。但是。析构函数不见了。。记不到哪里看的方法了。。A内部弄个B类来执行析构的事情

完整马。

#include <iostream>using namespace  std;class A{public:	static A*getInstance(); 	void show(){ std::cout << 1; }//测试是否成功private:	class B{		~B(){			if (A::m_Instance)//在B里面。。判断m_Instance是否实例化了。。若是则delete掉			{				delete A::m_Instance;			}		}	};	A(){  };	static A* m_Instance;	static B clr;//静态创建的话,程序执行完毕的时候会析构 就顺便析构了A了。};A*A::m_Instance = new A;A*A::getInstance() {	if (!m_Instance)	{		m_Instance = new A;	}	return m_Instance;};
#include "h.hpp"int main(){	A *a=A::getInstance(); A*b=A::getInstance();	if(a==b)a->show();	}会输出1

嗯 就是酱紫


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选