单例模式案例 – 首相

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值