c++ 单例模式

MySingleton.h头文件内容:

cpp 复制代码
#pragma once
#include <iostream>

class MySingleton
{
public:
	static MySingleton& getInstance() { // 单例,  搜了下静态成员函数中含有静态局部变量, 建议把函数实现放在头文件,成为隐式内联函数
		static MySingleton instance; // 局部静态变量,c++11保证其线程安全
		return instance;
	}

	// 禁止拷贝和赋值
	MySingleton(const MySingleton&) = delete;
	MySingleton& operator=(const MySingleton&) = delete;

	~MySingleton();

	void print() const;

	void setAge(int age);

private:
	MySingleton() = default; // = default表示显式要求编译器生成该构造函数的默认实现

	int age;
};

MySingleton.cpp源文件:

cpp 复制代码
#include "MySingleton.h"

MySingleton::~MySingleton() { std::cout << "析构MySingleton" << std::endl; }

void MySingleton::print() const {
	std::cout << "age: " << age << std::endl;
}

void MySingleton::setAge(int age) {
	this->age = age;
}

测试代码:

cpp 复制代码
#include "MySingleton.h"

void testSingleTon() {
	MySingleton& singleton = MySingleton::getInstance();
	singleton.setAge(9527);
	
	MySingleton* singleton2 = &MySingleton::getInstance();
	singleton2->print();
}

打印:

ok. 符合预期。

相关推荐
tankeven11 小时前
动态规划专题(03):区间动态规划从原理到实践(未完待续)
c++·算法·动态规划
天若有情67311 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
好家伙VCC11 小时前
**发散创新:基于Python与ROS的机器人运动控制实战解析**在现代机器人系统开发中,**运动控制**是实现智能行为的核心
java·开发语言·python·机器人
2401_8274999911 小时前
python项目实战09-AI智能伴侣(ai_partner_2-3)
开发语言·python
派葛穆11 小时前
汇川PLC-Python与汇川easy521plc进行Modbustcp通讯
开发语言·python
大前端下的小角色12 小时前
UE5.6 Cesium 插件编译踩坑记录(UE 5.6 + MSVC 14.38 + CMake 3.31)
c++
lzhdim12 小时前
SharpCompress:跨平台的 C# 压缩与解压库
开发语言·c#
嘿嘿嘿x312 小时前
Linux记录过程
linux·开发语言
默 语12 小时前
Records、Sealed Classes这些新特性:Java真的变简单了吗?
java·开发语言·python
止观止12 小时前
拥抱 ESNext:从 TC39 提案到生产环境中的现代 JS
开发语言·javascript·ecmascript·esnext