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. 符合预期。

相关推荐
360智汇云13 分钟前
k8s共享存储fuse-client三种运行方案对比
java·linux·开发语言
先知后行。32 分钟前
QT音视频
开发语言·qt·音视频
二向箔reverse1 小时前
人脸特征可视化进阶:用 dlib+OpenCV 绘制面部轮廓与器官凸包
开发语言·python
寒月霜华1 小时前
java-File
java·开发语言
钱彬 (Qian Bin)1 小时前
企业级实战:构建基于Qt、C++与YOLOv8的模块化工业视觉检测系统(基于QML)
c++·qt·yolo·qml·工业质检·qt 5.15.2
会开花的二叉树1 小时前
上手 cpp-httplib:轻量级 C++ HTTP 库的安装与实战指南
开发语言·c++·http
周杰伦fans1 小时前
C# 集合框架完全指南:从IEnumerable到ObservableCollection的深度解析
开发语言·c#
秦禹辰1 小时前
开源多场景问答社区论坛Apache Answer本地部署并发布至公网使用
开发语言·后端·golang
Su^!-苏释州2 小时前
Windows配置C/C++环境:MinGW+Vscode
c语言·c++·windows·vscode·大一新生学c语言
代码村新手2 小时前
C语言-指针
c语言·开发语言·jvm