量化交易之C++篇 - 单例模式(两个案例)

#include <iostream>

using namespace std;

// 单例模式
class ChairMan {

public:
	
	static ChairMan* getChairMan() {
		return singleMan;
	}

private:

	ChairMan() {

	}

	ChairMan(const ChairMan& chairMan) {

	}

	static ChairMan* singleMan;
};
ChairMan* ChairMan::singleMan = new ChairMan; // 初始化单例

void test01() {

	ChairMan* chairMan1 = ChairMan::getChairMan();

	ChairMan* chairMan2 = ChairMan::getChairMan();

	if (chairMan1 == chairMan2) {
		cout << "chairMan1 == chairMan2" << endl;
	} else {
		cout << "chairMan1 != chairMan2" << endl;
	}

	//ChairMan* chairMan3 = new ChairMan(*chairMan1); // 私有化 拷贝构造函数之后, 本句报错;
	//if (chairMan2 == chairMan3) {
	//	cout << "chairMan2 == chairMan3" << endl;
	//}
	//else {
	//	cout << "chairMan2 != chairMan3" << endl;
	//}
}

int main() {
	
	test01();

	return EXIT_SUCCESS;
}
#include <iostream>

using namespace std;

class Printer {

public:
	static Printer* getPrinter() {
		return singlePrinter;
	}

	void printText(string text) {
		cout << text << endl;
		this->count++;
		cout << "打印机使用了 " << this->count << " 次" << endl;
	}

private:
	
	Printer() {

	}

	Printer(const Printer &printer) {

	}

	static Printer* singlePrinter;
	int count = 0;
};
Printer* Printer::singlePrinter = new Printer;


void test01() {

	Printer* printer1 = Printer::getPrinter();

	printer1->printText("xuyushan");
	printer1->printText("gaoxiaoyuan");

	Printer* printer2 = Printer::getPrinter();
	printer2->printText("liisiying");
	printer2->printText("caotingting");
	
}

int main() {

	test01();

	return EXIT_SUCCESS;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值