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

相关推荐
吴声子夜歌8 分钟前
Guava——反射
java·开发语言·guava
lingran__13 分钟前
Git 完全指南(三):远程仓库与标签管理
开发语言·git·gitee·ssh·团队协作·远程仓库·分布式版本控制
for_ever_love__15 分钟前
python爬虫: 数据解析
开发语言·爬虫·python·xpath
学习星球24 分钟前
AI 一句话生成 3D 游戏世界:腾讯 HY-World 2.0 开源深度解析与本地实战
开发语言·人工智能·游戏·3d·ai·课程设计·ai编程
名字还没想好☜26 分钟前
Go 用 -race 抓数据竞争:一个偶发崩溃的排查、原理与修复
开发语言·后端·golang·go
励志不掉头发的内向程序员27 分钟前
LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之鼠标事件与RS_ActionDrawLine
c++·qt·学习·架构·计算机外设
旖旎夜光31 分钟前
LeetCode 525:连续数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
fpcc36 分钟前
c++编程实践—如何理解生命周期
c++
小灰灰搞电子37 分钟前
Rust std::vec::Vec<T>动态数组:所有相关 API 全面介绍
开发语言·rust
学习星球40 分钟前
CodeWhale 深度剖析:从 DeepSeek-TUI 到 40.9K Star 的 Rust 终端编程 Agent
开发语言·后端·rust