随笔 - 192,  文章 - 0,  评论 - 2,  阅读 - 25万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

 


1.1     目的 为了让类中只有一个实例,实例不需要自己释放

1.2     将 默认构造  和 拷贝构造 私有化

1.3     内部维护一个 对象指针

1.4     私有化唯一指针

1.5     对外提供 getInstance方法来访问这个指针

1.6     保证类中只能实例化唯一一个对象

单例模式案例 – 打印机案例

复制代码
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<iostream>
 3 #include <string>
 4 using namespace std;
 5 
 6 class Printer
 7 {
 8 private:
 9     Printer(){ m_Count = 0; };
10     Printer(const Printer& p);
11 
12 public:
13     static Printer* getInstance()
14     {
15         return singlePrinter;
16     }
17 
18     void printText(string text)
19     {
20         cout << text << endl;
21         m_Count++;
22         cout << "打印机使用了次数为: " << m_Count << endl;
23     }
24 
25 
26 
27 
28 private:
29     static Printer* singlePrinter;
30     int m_Count;
31 };
32 Printer* Printer::singlePrinter = new Printer;
33 
34 void test01()
35 {
36     //拿到打印机
37     Printer * printer =  Printer::getInstance();
38 
39     printer->printText("离职报告");
40     printer->printText("入职报告");
41     printer->printText("加薪申请");
42     printer->printText("升级申请");
43     printer->printText("退休申请");
44 }
45 
46 int main(){
47 
48     test01();
49 
50     system("pause");
51     return EXIT_SUCCESS;
52 }
复制代码

 

posted on   Malphite  阅读(250)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示