当前位置: 首页 > news >正文

c++ 单例模式

MySingleton.h头文件内容:

#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源文件:

#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;
}

测试代码:

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

打印:

ok. 符合预期。

http://www.dtcms.com/a/237257.html

相关文章:

  • Qwen 大模型-对话模板中system与user的区别解析
  • 孙溟㠭浅析清朝“徽派”篆刻
  • 抗辐照MCU在卫星载荷电机控制器中的实践探索
  • Doris 数据库深度解析:架构、原理与实战应用
  • 自动驾驶---SD图导航的规划策略
  • 【氧化镓】HTFB应力对β - Ga2O3 SBD的影响
  • 【Java学习笔记】包装类
  • python版若依框架开发:后端开发规范
  • 快速部署和启动Vue3项目
  • C++:用 libcurl 发送一封带有附件的邮件
  • 让DeepSeek写2025年高考作文
  • CANoe trace里面显示的Time 具体是什么意思
  • 在C语言中使用UUID作为AES加密密钥
  • 通过nohup命令,实现将指定文件快速上传到KS3
  • JAVA-springboot log日志
  • 打卡第38天:早停策略和模型权重的保存
  • C++图书管理
  • 使用 Redisson 实现分布式锁—解决方案详解
  • MySQL复杂SQL(多表联查/子查询)详细讲解
  • 安达发|装饰材料行业APS生产排程软件:破解生产困局,智造升级新引擎
  • Redis:List类型
  • Go爬虫开发学习记录
  • Canal环境搭建并实现和ES数据同步
  • 分享下量化快速选股和回测的方法
  • MIT 6.S081 Lab10 mmap
  • 智能手表供应链与采购清单(Aurora Watch S1)
  • 基于Python学习《Head First设计模式》第六章 命令模式
  • 第4章——springboot自动配置
  • 【JavaSE】泛型学习笔记
  • 【知识扫盲】分布式系统架构或分布式服务中的管理面,数据面和业务面