【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;
}
相关推荐
ht巷子2 分钟前
Qt:信号与槽
开发语言·c++·qt
千里马-horse2 分钟前
Checker Tool
c++·node.js·napi
北辰水墨3 分钟前
【算法篇】单调栈的学习
c++·笔记·学习·算法·单调栈
watersink6 分钟前
Agent 设计模式
开发语言·javascript·设计模式
惆怅客1239 分钟前
在 vscode 中断点调试 ROS2 C++ 的办法
c++·vscode·调试·ros 2
小尧嵌入式12 分钟前
STM32中OTA介绍及使用
开发语言·stm32·单片机·嵌入式硬件
xincan081812 分钟前
MacOS安装Java+mvn+mvnd+jenv多环境丝滑切换
java·开发语言·macos
派大鑫wink14 分钟前
【Day13】集合框架(一):List 接口(ArrayList vs LinkedList)实战
java·开发语言·windows
眠りたいです14 分钟前
Docker:镜像的运行实体-Docker Container
java·运维·c++·docker·容器·eureka
ComputerInBook20 分钟前
C++ 标准提供的 thread (线程)之 join() 函数示例(windows平台)
c++·线程·join函数