64,662
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class base
{
public:
int getnum(){return num;}
static base* Instance()
{
if(NULL == pIn)
pIn = new base(10);
return pIn;
}
private:
class RAII
{
public:
~RAII()
{
cout << "resource is distructed" << endl;
if(NULL != base::pIn)
delete base::pIn;
}
};
base(int i):num(i)
{
}
static base *pIn;
int num;
static RAII raii;
};
base* base::pIn = NULL;
base::RAII base::raii = base::RAII();
int main()
{
base *pb = base::Instance();
return 0;
}
Singleton &Singleton::Instance(void)
{
Singleton only;
return only;
}
public:
~base()
{
delete pIn;
pIn = NULL;
}
//在某些时候你,你发现内存太大了,而这个时候这个singleton已经不用了,那么这样
base::~base();//现在释放掉了,而后面你发现又要使用这个singleton了,同样再来返回个实例
base *pb = base::Instance();//又可以使用了
//又不想用了
base::~base();
//又需要了
base *pb = base::Instance();
.........