版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/river472242652/article/details/82977045
单例模式
基本版–单线程
#pragma once
#include <iostream>
#include <thread>
/**
*单例模式标准实现 5步走(懒汉式)
1静态私有实例指针
2拷贝赋值私有化
3构造析构私有化
4全局访问与释放
5静态内部实例指针全局实例
*Date :[10/9/2018 ]
*Author :[RS]
*/
using namespace std;
class Singleton1 {
private:
Singleton1() {
cout << "构造 begin" << endl;
this_thread::sleep_for(chrono::seconds(1));
cout << "构造 over" << endl;
}
virtual ~Singleton1() {
cout << "构造" << endl;
}
private:
Singleton1(const Singleton1&) = delete;
Singleton1& operator=(const Singleton1) = delete;
public:
static Singleton1* GetInstance() {
if (nullptr == mInstance) {
mInstance = new Singleton1;
}
return mInstance;
}
static void RelaceInstance() {
if (nullptr != mInstance) {
delete mInstance;
mInstance = nullptr;
}
}
public:
void print() {
cout << "打印实例内存指针:" << mInstance << endl;;
}
private:
static Singleton1 * mInstance;
};
Singleton1* Singleton1::mInstance = NULL;
测试方法
#include "Singleton1.hpp"
void main() {
auto ss = Singleton1::GetInstance();
ss->print();
auto ss2 = Singleton1::GetInstance();
ss2->print();
system("pause");
}
测试结果