C++单例模式
别人教的实例,我手写了一下
实例1 众人使用一台打印机
#pragma once
#include<iostream>
#include<string>
class Printer {
private:
Printer() { m_cout = 0; }
Printer(const Printer& p);
int m_cout;
static Printer* sigleprinter;
public:
static Printer* getInstance() {
return sigleprinter;
}
void PrintTex(std::string text) {
std::cout << text << std::endl;
m_cout++;
std::cout << "打印机使用的次数为:" << std::endl;
}
};
Printer* Printer::sigleprinter = new Printer;
void test01() {
Printer * rinter = Printer::getInstance();
rinter->PrintTex("1次报告");
rinter->PrintTex("2次报告");
rinter->PrintTex("3次报告");
rinter->PrintTex("4次报告");
}
int main() {
test01();
system("pause");
return EXIT_SUCCESS;
}
实例2 指定的某一个人
#pragma once
#include<iostream>
using namespace std;
class Chairman {
private:
//Chairman() {}
Chairman() {
cout << "创建对象" << endl;
}
Chairman(const Chairman&c) {}
public:
static Chairman* getInstance() {
return Singleman;
}
private:
static Chairman * Singleman;
};
Chairman * Chairman::Singleman = new Chairman;
void test01() {
Chairman* Chairman1 = Chairman::getInstance();
Chairman* Chairman2 = Chairman::getInstance();
if (Chairman1 == Chairman2) {
cout << "1,2两者相同" << endl;
}
else cout << "1,2两者不同" << endl;
/* Chairman* Chairman3 = new Chairman(*Chairman2);
if (Chairman3 == Chairman2) {
cout << "2,3两者相同" << endl;
}
else cout << "2,3两者不同" << endl;
*/
}
int main() {
test01();
system("pause");
return EXIT_SUCCESS;
}