C++单例模式-打印机
1.私有化构造函数
2.私有化拷贝构造
3.私有化唯一的静态成员变量(内部指针)(类内声明)
4.内部唯一的指针类外初始化(带上作用域) 保证了只创建了一个对象(因为我用了static,静态成员变量是只有一个能用的,并且类外无法访问)
5.公有化提供一个静态getInstance接口,可以进行访问,并且把上面创建的唯一对象return回去
#define _CAT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
class Printer {
private:
//私有化构造函数
Printer() {
m_count = 0;
}; //初始化写在构造里面
Printer(const Printer& p);//私有化拷贝构造函数
public:
static Printer* getInstance() {
return singlePrinter;
}
void printTest(string text) {
cout << text << endl;
m_count++;
cout << "打印机使用的次数为:" << m_count << endl;
}
private:
static Printer* singlePrinter; //私有化唯一的静态成员变量(内部指针)
int m_count;
};
//内部指针在外部初始化
Printer* Printer::singlePrinter = new Printer;//保证了只能创建一个对象了
void test01() {
//拿到打印机
Printer* printer=Printer::getInstance();
printer->printTest("离职报告");
printer->printTest("入职报告");
printer->printTest("升职");
printer->printTest("退学");
}
int main() {
test01();
system("pause");
return EXIT_SUCCESS;
}
当出现一个值像下面这样很大的时候,一般都是没有初始化的原因