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

相关推荐
栈与堆10 分钟前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
一路向北·重庆分伦12 分钟前
03-01:MQ常见问题梳理
java·开发语言
txinyu的博客16 分钟前
结合游戏场景理解,互斥锁,读写锁,自旋锁,CAS / 原子变量,分段锁
开发语言·c++·游戏
hugerat21 分钟前
在AI的帮助下,用C++构造微型http server
linux·c++·人工智能·http·嵌入式·嵌入式linux
阿里嘎多学长24 分钟前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yuanyikangkang25 分钟前
STM32 lin控制盒
开发语言
-森屿安年-27 分钟前
unordered_map 和 unordered_set 的实现
数据结构·c++·散列表
九久。1 小时前
手动实现std:iterator/std:string/std::vector/std::list/std::map/std:set
c++·stl
小羊羊Python1 小时前
Sound Maze - 基于 SFML+C++14 的音效迷宫开源游戏 | MIT 协议
c++·游戏·开源