#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;
}
智能指针auto_ptr管理单例
最新推荐文章于 2023-10-18 14:47:29 发布