当前位置: 首页 > news >正文

【C++】单例模式

【C++】单例模式


文章目录

  • 【C++】单例模式
  • 前言
  • 一、静态成员变量
  • 二、静态函数
  • 三、单例模式案例 —— 打印机案例
  • 总结


前言

本篇文章将讲到,静态成员变量,静态函数,以及单例模式案例。


一、静态成员变量

静态成员变量
静态成员变量 :编译阶段就分配了内存
类内声明 、类外初始化
静态成员变量 所有对象都共享同一份数据
静态成员变量也有访问权限, 私有权限类外访问不到

#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;class Person
{
public://1、静态成员变量//静态成员变量 :编译阶段就分配了内存//类内声明 、类外初始化//静态成员变量 所有对象都共享同一份数据static int m_A;
private:static int m_B;
};
int Person::m_A = 100;
int Person::m_B = 100;void test01()
{//1.通过对象进行访问Person p1;cout << p1.m_A << endl;Person p2;p2.m_A = 0;cout << p1.m_A << endl;//2.通过类名进行访问cout << Person::m_A << endl;//静态成员变量也有访问权限, 私有权限类外访问不到//cout << Person::m_B << endl;}int main()
{test01();system("pause");return EXIT_SUCCESS;
}

二、静态函数

所有对象都共享同一份函数
静态成员函数 只可以访问 静态成员变量,不可以访问非静态成员变量
静态成员函数 也是有访问权限的
静态成员函数 有两种访问方式:通过对象 、通过类名
静态成员函数也是有访问权限的

#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;class Person
{
public:static int m_A;int m_c;static void func(){//m_c = 100;//静态成员函数 不能访问非静态成员变量m_A = 100;//静态成员函数 能访问静态成员变量cout << "func的调用" << endl;}private:static int m_B;//私有静态成员变量static void func2(){}
};int Person::m_A = 0;
int Person::m_B = 0;void test02()
{//通过对象Person p1;p1.func();cout << p1.m_A << endl;//通过类名Person::func();//Person::func2();//静态成员函数也是有访问权限的
}int main()
{test02();system("pause");return EXIT_SUCCESS;
}

三、单例模式案例 —— 打印机案例

通过一个类 只能实例化唯一的一个对象
私有化
默认构造
拷贝构造
唯一实例指针

#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#include<string>class Printer
{
public:int m_Count;static Printer* getInstance(){return printer;}void printText(string text){m_Count++;cout << text << endl;}
private:Printer(){m_Count = 0;}Printer(const Printer& p) {}static Printer* printer;};Printer* Printer::printer = new Printer;void test01()
{Printer* p1 = Printer::getInstance();p1->printText("入职证明");p1->printText("离职证明");p1->printText("加薪申请");p1->printText("旅游申请");cout << "打印机使用次数: " << p1->m_Count << endl;Printer* p2 = Printer::getInstance();p2->printText("调休申请");cout << "打印机使用次数: " << p1->m_Count << endl;
}int main() {//	cout << "mian函数调用" << endl;test01();system("pause");return EXIT_SUCCESS;
}

总结

到这里这篇文章的内容就结束了,谢谢大家的观看,如果有好的建议可以留言喔,谢谢大家啦!


http://www.mrgr.cn/news/41162.html

相关文章:

  • NP-hard问题
  • 用友U8-CRM fillbacksettingedit.php SQL注入复现
  • 第L6周:机器学习|支持向量机(SVM):2. 支持向量机实战
  • Linux的基本指令(2)
  • C++语言学习(5): cppreference 介绍和离线文档
  • 基础算法之双指针--Java实现(下)--LeetCode题解:有效三角形的个数-查找总价格为目标值的两个商品-三数之和-四数之和
  • JavaScript(js)获取网页的图标地址
  • 【Nacos架构 原理】内核设计之Nacos寻址机制
  • 师生健康信息管理:SpringBoot技术突破
  • 滚雪球学Oracle[4.2讲]:PL/SQL基础语法
  • Matlab语言基础教程笔记
  • 两种并行控制OLED屏幕的电路方法6080和8080(SH1107)
  • 加油吧,仅有23家ICT科技类公司入围2024中国企业500强
  • 二分查找算法
  • 【Linux】解锁磁盘文件奥秘,高效数据管理的实战技巧
  • Proxmox使用tc给虚拟机限速,实现不对等网速——浪浪云
  • 习题4-选择结构程序设计
  • 让 Python 对你说谎:创造不真实的数据和响应
  • 如何使用工具删除 iPhone 上的图片背景
  • 医院体检管理系统小程序的设计