2.1 目的 为了让类中只有一个实例,实例不需要自己释放
2.2 将 默认构造 和 拷贝构造 私有化
2.3 内部维护一个 对象指针
2.4 私有化唯一指针
2.5 对外提供 getInstance方法来访问这个指针
2.6 保证类中只能实例化唯一一个对象
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
//创建首相类
//需求 单例模式 为了创建类中的对象,并且保证只有一个对象实例
class PrimeMinister {
public:
//提供 get方法 访问 首相
static PrimeMinister* getInstance() {
return singleMan;
}
private:
//1构造函数 进行私有化
PrimeMinister() {
cout << "单例模式案例——首相案例" << endl;
}
//拷贝构造 私有化
PrimeMinister(const PrimeMinister &premier) {
}
static PrimeMinister *singleMan;
};
PrimeMinister *PrimeMinister::singleMan = new PrimeMinister;
void test01() {
/*
PrimeMinister p1;
PrimeMinister *p2 = new PrimeMinister;
PrimeMinister *p3 = new PrimeMinister;
*/
/*
PrimeMinister *pm = new PrimeMinister;
PrimeMinister *pm2 = new PrimeMinister;
*/
//PrimeMinister::singleMan = NULL;
PrimeMinister *premier1 = PrimeMinister::getInstance();
PrimeMinister *premier2 = PrimeMinister::getInstance();
if (premier1 == premier2) {
cout << "premier1和premier2相同" << endl;
}
else {
cout << "premier1和premier2不相同" << endl;
}
/*
PrimeMinister *premier3 = new PrimeMinister(*premier2);
if (premier3 == premier2) {
cout << "premier3和premier2相同" << endl;
}
else {
cout << "premier3和premier2不相同" << endl;
}
*/
}
int main(){
cout << "main调用" << endl; //主席创建先于main调用
test01();
system("pause");
return 0;
}