" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)單例模式的方法

 更新時間:2021年12月17日 16:37:10   作者:tarespan  
這篇文章主要為大家介紹了C++實現(xiàn)單例模式的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

餓漢模式

類實例化就會占用內(nèi)存,浪費資源,效率高,不存在線程安全問題。

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

懶漢模式

延遲加載,節(jié)省資源,效率低,存在線程安全問題。

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

鎖 + 智能指針

線程安全(鎖)+ 內(nèi)存回收(智能指針)

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

局部靜態(tài)變量

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

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++中求余運算符(%)示例詳解

    C++中求余運算符(%)示例詳解

    求余運算符“%”,二元運算符,具有左結(jié)合性。參與運算的量均為整型。求余運算的結(jié)果等于兩個數(shù)相除后的余數(shù)。看似很簡單的運算符,卻也真要掌握用好它也不容易,這篇文章主要介紹了C++中求余運算符(%)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Prim(普里姆)算法求最小生成樹的思想及C語言實例講解

    Prim(普里姆)算法求最小生成樹的思想及C語言實例講解

    Prim算法能夠在帶權(quán)的圖中搜索出最小生成樹,這也是各大ACM和面試及考研題目中的熱點,下面我們就來詳細看一下Prim(普里姆)算法求最小生成樹的思想及C語言實例講解
    2016-06-06
  • Qt實現(xiàn)卡牌對對碰游戲(附demo)

    Qt實現(xiàn)卡牌對對碰游戲(附demo)

    本文主要介紹了Qt實現(xiàn)卡牌對對碰游戲,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • 使用C語言判斷英文字符大小寫的方法

    使用C語言判斷英文字符大小寫的方法

    這篇文章主要介紹了使用C語言判斷英文字符大小寫的方法,分別為isupper()函數(shù)和islower()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++ std::function詳解

    C++ std::function詳解

    類模版std::function是一種通用的多態(tài)函數(shù)包裝器std::function的實例可以對任何可以調(diào)用的目標實體進行存儲、復(fù)制、和調(diào)用操作,本文詳細的介紹一下,感興趣的可以了解一下
    2021-10-10
  • C++中vector操作方式詳解(多種方式)

    C++中vector操作方式詳解(多種方式)

    這篇文章主要介紹了C++中vector操作方式詳解(多種方式),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Matlab實現(xiàn)生成箭頭坐標軸詳解

    Matlab實現(xiàn)生成箭頭坐標軸詳解

    這篇文章主要介紹了如何利用Matlab實現(xiàn)生成箭頭坐標軸,為坐標軸增添箭頭,文中的示例代碼講解詳細,對我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • 基于C/C++ 常見誤區(qū)詳解

    基于C/C++ 常見誤區(qū)詳解

    本篇文章介紹了在c和c++中一些常見誤區(qū)的詳細概述。需要的朋友參考下
    2013-05-05
  • C++中的String的常用函數(shù)用法(最新推薦)

    C++中的String的常用函數(shù)用法(最新推薦)

    這篇文章主要介紹了C++中的String的常用函數(shù)用法總結(jié),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • c語言中使用BF-KMP算法實例

    c語言中使用BF-KMP算法實例

    這篇文章主要介紹了c語言中使用BF-KMP算法,大家參考使用
    2013-11-11

最新評論

土默特右旗| 措勤县| 裕民县| 大同县| 博野县| 西吉县| 赞皇县| 萨嘎县| 浮山县| 电白县| 武乡县| 蚌埠市| 永川市| 城固县| 依安县| 洛扎县| 毕节市| 酉阳| 广昌县| 宝兴县| 壶关县| 社会| 望都县| 将乐县| 宝应县| 怀宁县| 杭锦后旗| 许昌市| 阳西县| 江西省| 石楼县| 和田县| 金塔县| 盐津县| 三门县| 洱源县| 宜宾市| 峨山| 新巴尔虎左旗| 廊坊市| 建宁县|