【C++】单例模式

  • 工厂模式:一个类型可以批量生产无数个对象
  • 单例模式:一个类型只允许生产一个对象

单例模式是一种常用的软件设计模式。通过单例模式可以保证系统中应用该模式的类只有一个实例化对象。

单例模式的类中

  • 提供私有属性下的构造函数(默认的拷贝构造就够了)
  • 包含一个本身这个类的私有的静态对象(指针或实例化的对象,几乎写的都是指针的)
  • 提供一个静态的公有函数去创建或获取这个私有的对象或者对象指针(一般是对象指针)

示例:

c++ 复制代码
#include<iostream>
using namespace std;

class Single {
private:
	Single(){}
	Single(const Single& s){}//防止对象在类外被创建和拷贝
	static Single* pSingle;
public:
	static Single* getSingle(){
		return pSingle;
	}
	void speak() {
		cout << "我是单例模式" << endl;
	}
};
Single* Single::pSingle = new Single;
int main() {
	Single* p = Single::getSingle();
	p->speak();
	delete p;
}
相关推荐
清风玉骨1 分钟前
C++/Qt从零开始编译使用libxlsxwriter库
开发语言·qt
报错小能手4 分钟前
Swift UI 用 MVVM 架构 Combine EventBus 实现待办清单
开发语言·ui·swift
威迪斯特6 分钟前
Cobra框架:Go语言命令行开发的现代化利器
开发语言·前端·后端·golang·cobra·交互模型·命令行框架
IT利刃出鞘14 分钟前
Java反射--PropertyDescriptor的使用
java·开发语言
㳺三才人子16 分钟前
容器內的 H2 控制台
开发语言·前端·javascript
Evand J16 分钟前
【MATLAB程序】基于RSSI的RFID二维轨迹定位仿真介绍,EKF滤波增加轨迹定位精度。附下载链接
开发语言·matlab·平面·滤波·定位·导航
遇见火星17 分钟前
Firewalld 防火墙实战指南 + TCPWrapper 七层访问控制
开发语言·windows·python
guygg8817 分钟前
MATLAB实现Bouc-Wen模型动力响应计算
开发语言·matlab
aini_lovee21 分钟前
基于MATLAB实现行人检测
开发语言·matlab
所愿ღ26 分钟前
SSM框架-Spring1
java·开发语言·笔记·spring