C++ 单例模式

C++ 单例模式跟Java中的单例模式没什么区别

什么是单例?

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例

什么时候使用单例

1个类里面的方法要在很多地方都使用到的时候建议使用单例。

单例的3个步骤,也是判断是否是单例的依据

1 就是创建1个静态的类

2 私有化构造方法

3 获取唯一的对应

demo练习

创建1个fun1.h文件,内容如下

复制代码
class Singleton{
    private:
        Singleton();
        static Singleton* mInstance;
    public:
        ~Singleton();
        static Singleton* getInstance();
        void init();   
};

创建1个fun1.cpp文件内容如下

复制代码
#include <iostream>
#include <string>
#include "fun1.h"
using namespace std;
// 创建1个静态的类
Singleton* Singleton::mInstance =NULL;
// 私有化构造方法
Singleton::Singleton()
{

}
// 析构函数销毁的时候用到
Singleton::~Singleton(){

}
// 获取唯一的对象
Singleton* Singleton::getInstance(){
    if (mInstance ==NULL)
    {
        mInstance == new Singleton();
    }
    return mInstance;
    
}
// 类Singletion下的一个方法
void Singleton::init(){
      cout<<"单例模式"<<endl;
}

int main()
{
    Singleton* singletion =Singleton::getInstance();
    singletion->init();
//  或者
//  Singleton::getInstance()->init();
    return 0;
}
相关推荐
先知后行。13 分钟前
python的类
开发语言·python
派大鑫wink18 分钟前
【Day12】String 类详解:不可变性、常用方法与字符串拼接优化
java·开发语言
柏木乃一20 分钟前
进程(6)进程切换,Linux中的进程组织,Linux进程调度算法
linux·服务器·c++·算法·架构·操作系统
JIngJaneIL21 分钟前
基于springboot + vue健康管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端
dyxal23 分钟前
Python包导入终极指南:子文件如何成功调用父目录模块
开发语言·python
Trouvaille ~24 分钟前
【Linux】从磁盘到文件系统:深入理解Ext2文件系统
linux·运维·网络·c++·磁盘·文件系统·inode
我居然是兔子32 分钟前
Java虚拟机(JVM)内存模型与垃圾回收全解析
java·开发语言·jvm
小许好楠1 小时前
java开发工程师-学习方式
java·开发语言·学习
superman超哥1 小时前
仓颉锁竞争优化深度解析
c语言·开发语言·c++·python·仓颉
Halo_tjn1 小时前
基于 IO 流实现文件操作的专项实验
java·开发语言