广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现单例模式的方法
  • 107
分享到

C++实现单例模式的方法

2024-04-02 19:04:59 107人浏览 独家记忆
摘要

目录饿汉模式懒汉模式锁 + 智能指针局部静态变量总结 饿汉模式 类实例化就会占用内存,浪费资源,效率高,不存在线程安全问题。 class Singleton{ Singl

饿汉模式

类实例化就会占用内存,浪费资源,效率高,不存在线程安全问题。


class Singleton{
    Singleton() { }
    static Singleton* m_instance_ptr;
public:
    static Singleton* get_instance() {
        return m_instance_ptr;
	}
};
Singleton* Singleton::m_instance_ptr = new Singleton();
int main(){
    Singleton* instance1 = Singleton::get_instance();
    Singleton* instance2 = Singleton::get_instance();
    return 0;
}

懒汉模式

延迟加载,节省资源,效率低,存在线程安全问题。


class Singleton {
    Singleton() { }
    static Singleton* m_instance_ptr;
public:
    static Singleton* get_instance() {
        if(m_instance_ptr == nullptr)
			m_instance_ptr = new Singleton();
        return m_instance_ptr;
    }
};
Singleton* Singleton::m_instance_ptr = nullptr;
int main(){
    Singleton* instance1 = Singleton::get_instance();
    Singleton* instance2 = Singleton::get_instance();
    return 0;
}

锁 + 智能指针

线程安全(锁)+ 内存回收(智能指针)


#include <iOStream>
#include <memory>
#include <mutex>
class Singleton {
public:
	typedef std::shared_ptr<Singleton> Ptr;
    static Ptr get_instance() {
        if(m_instance_ptr == nullptr) {
            std::lock_guard<std::mutex> lk(m_mutex);
            if(m_instance_ptr == nullptr)
				m_instance_ptr = std::shared_ptr<Singleton>(new Singleton);
        }
        return m_instance_ptr;
    }
private:
	Singleton() {}
    static Ptr m_instance_ptr;
    static std::mutex m_mutex;
};
Singleton::Ptr Singleton::m_instance_ptr = nullptr;
std::mutex Singleton::m_mutex;
int main(){
    Singleton::Ptr instance1 = Singleton::get_instance();
    Singleton::Ptr instance2 = Singleton::get_instance();
    return 0;
}

局部静态变量


class Singleton {
public:
    Singleton(const Singleton&)=delete;
    static Singleton& get_instance() {
        static Singleton instance;
        return instance;
    }
private:
    Singleton() {}
};
int main() {
	Singleton& instance1 = Singleton::get_instance();
    Singleton& instance2 = Singleton::get_instance();
    return 0;
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C++实现单例模式的方法

本文链接: https://www.lsjlt.com/news/160214.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现单例模式的方法
    目录饿汉模式懒汉模式锁 + 智能指针局部静态变量总结 饿汉模式 类实例化就会占用内存,浪费资源,效率高,不存在线程安全问题。 class Singleton{ Singl...
    99+
    2022-11-12
  • C++实现单例模式的方法是什么
    这篇文章将为大家详细讲解有关C++实现单例模式的方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。饿汉模式类实例化就会占用内存,浪费资源,效率高,不存在线程安全问题。class&nbs...
    99+
    2023-06-22
  • C#实现单例模式的多种方式
    什么是单例模式 这里我就不做过多的解释了, 毕竟关于Singleton的资料实在是太多太多了。点击这里 简单的思路就是, 创建对象单例的动作转移到另外的行为上面, 利用一个行为去创建...
    99+
    2022-11-13
  • C++单例模式的几种实现方法详解
    目录局部静态变量方式静态成员变量指针方式智能指针方式辅助类智能指针单例模式通用的单例模板类总结局部静态变量方式 //通过静态成员变量实现单例 //懒汉式 class Single2 ...
    99+
    2022-11-13
  • C#实现单例模式的6种方法小结
    目录介绍Version 1 - 非线程安全Version 2 - 简单的线程安全Version 3 - Double-check locking的线程安全Version 4 - 不完...
    99+
    2022-11-13
  • C++中有哪些实现单例模式的方式
    这篇文章将为大家详细讲解有关C++中有哪些实现单例模式的方式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但...
    99+
    2023-06-17
  • Python中单例模式的实现方法
    单例 — 让 类 创建的对象,在系统中 只有唯一的一个实例; 1)、定义一个类属性,初始值是 None ,用于记录 单例对象的引用;2)、重写 new 方法;3)、如果 ...
    99+
    2022-11-11
  • C++怎么实现单例模式
    本篇内容介绍了“C++怎么实现单例模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!多线程环境下的单例模式Instance方法是这样实现的:...
    99+
    2023-06-19
  • Python实现单例模式的5种方法
    目录基本介绍优缺点Python实现方式1,元类实现:方式2,继承实现:方式3,装饰器实现:方式4,模块实现:方式5,@classmethod实现单例模式:基本介绍 一个对象只允许被一次创建,一个类只能创建一个对象,...
    99+
    2022-06-02
    Python 单例模式
  • java设计模式-单例模式实现方法详解
    目录饿汉式静态变量静态代码块懒汉式线程不安全线程安全双重检查静态内部类总结单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要...
    99+
    2022-11-12
  • C++单例模式实例分析
    本篇内容介绍了“C++单例模式实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!不能被拷贝的类拷贝只会放生在两个场景中:拷贝构造函数以及...
    99+
    2023-06-29
  • Golang sync.Once实现单例模式的方法详解
    目录1. sync.Once 的原理和实现2. sync.Once 的错误处理3. sync.Once 的嵌套调用4. 并发性能5. 总结Go 语言的 sync 包提供了一系列同步原...
    99+
    2023-05-18
    Golang sync.Once实现单例模式 Golang sync.Once原理 Golang sync.Once使用 Golang sync.Once
  • C++实现单例模式的自动释放
    单例模式是为了确保某个类只能创建一个对象而设计的。当一个程序的某个类型只允许有一个实例的时候使用。 一般采用动态分配的方式来生成单例对象,这个时候C++程序员就需要考虑内存回收的问题...
    99+
    2022-11-12
  • Java实现单例模式的五种方法介绍
    目录饿汉式懒汉式双重检查锁静态内部类内部枚举类实现饿汉式 立即加载 防止new对象,构造私有,写一个公共的方法返回对象 占用空间,线程安全 public class Singleto...
    99+
    2023-01-31
    Java单例模式 Java单例模式实现方式
  • 5种Python单例模式的实现方式
    本文为大家分享了Python创建单例模式的5种常用方法,供大家参考,具体内容如下 所谓单例,是指一个类的实例从始至终只能被创建一次。 方法1: 如果想使得某个类从始至终最多只有一个实例,使用__new__方...
    99+
    2022-06-04
    模式 方式 Python
  • Android 单例模式的四种实现方式
    目录一.饿汉式二.懒汉式三.双重检查加锁方式四.静态内部类方式总结一.饿汉式 public class SingletionStarving { private sta...
    99+
    2022-11-12
  • Java单例模式的五种实现方式
    目录前言饿汉单例懒汉单例非线程安全的懒汉单例加同步锁的懒汉单例双重检验懒汉单例静态内部类静态内部类为什么是线程安全总结前言 单例模式(Singleton Pattern)是 Java...
    99+
    2022-11-13
  • C++单例模式的懒汉模式和饿汉模式怎么实现
    本文小编为大家详细介绍“C++单例模式的懒汉模式和饿汉模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++单例模式的懒汉模式和饿汉模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。懒汉模式懒...
    99+
    2023-06-29
  • C++设计模式之简单工厂模式的实现示例
    前言 在我们要使用一个对象时,就必须通过类来实例化对象,也就是需要new一个对象。在new的过程是非常复杂的,要经过读文件->解析文本->创建对象->给属性设值等过...
    99+
    2022-11-12
  • C++单例模式实现线程池的示例代码
    C语言单例模式实现线程池。 该代码中,使用了单例模式来创建线程池对象,保证了整个程序中只有一个线程池对象。 线程池中包含了任务队列、工作线程数组、互斥锁、条件变量等成员,通过这些成员...
    99+
    2023-05-16
    C++单例模式实现线程池 C++单例模式 线程池 C++ 线程池 C++ 单例模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作