#include <iostream>
#include <memory>
using namespace std;
class Singleton
{
public:
static Singleton* GetInstance()
{
// if (instance_ == nullptr)
// {
// instance_ = new Singleton;
// }
// return instance_;
if(!instance_.get())
{
instance_ = auto_ptr<Singleton>(new Singleton);
}
return instance_.get();
}
~Singleton()
{
cout << "~Singleton ..." << endl;
}
private:
// 禁止拷贝(只有声明,没有实现,要是有拷贝的操作,会直接报错)
Singleton(const Singleton& other);
Singleton& operator=(const Singleton& other);
// 拷贝构造声明为私有,外部就不能构造对象
Singleton()
{
cout << "Singleton ..." << endl;
}
// static Singleton* instance_; // 这边使用智能指针,不然就必须手动释放instance_,在项目中,可能有很多地方调用,这样就很难控制在哪释放