智能指针auto_ptr管理单例

来源:互联网 发布:淘宝照片拍摄技巧 编辑:程序博客网 时间:2024/05/17 04:13
#include <iostream>#include <memory>using namespace std;class Singleton {public:static Singleton* GetInstance() {if(NULL == single_.get()) {single_ = auto_ptr<Singleton>(new Singleton);}return single_.get();//get()方法返回原生指针,release()方法会释放所有权,返回指针}~Singleton() {std::cout << "~Singleton::Singleton()" << std::endl;}void Print() {std::cout << "Singleton::Print" << std::endl;}private:static auto_ptr<Singleton> single_;Singleton() {std::cout << "Singleton::Singleton()" << std::endl;}Singleton& operator=(const Singleton&) {}Singleton(const Singleton&) {}};auto_ptr<Singleton> Singleton::single_;int main() {Singleton::GetInstance()->Print();Singleton* single1 = Singleton::GetInstance();single1->Print();return 0;}