先上代码
#include<memory>
#include<iostream>
using namespace std;
class CSingleton
{
public:
static CSingleton* GetInstance();
~CSingleton();
private:
CSingleton();
CSingleton(const CSingleton &instance);
CSingleton & operator=(const CSingleton &instance);
static shared_ptr<CSingleton> pInstance;
};
CSingleton* CSingleton::GetInstance()
{
return pInstance.get();
}
CSingleton::CSingleton()
{
cout << "构造";
}
CSingleton::~CSingleton()
{
cout << "析构";
system("pause");
}
#include<iostream>
#include<memory>
#include"Singleton.h"
using namespace std;
shared_ptr<CSingleton> CSingleton::pInstance(new CSingleton());
//CSingleton* CSingleton::Instance = new CSingleton;
int main()
{
CSingleton* ptr = CSingleton::GetInstance();
return 0;
}
测试结果
简单分析
其实和先前定义一个内部类,用内部类的析构函数来释放内存空间的原理类似,处于栈上的智能指针消亡时,会自动delete所管理的内存空间,析构函数就可以被调用到。