單例模式(懶漢模式/餓漢模式)

相關概念參考:【C++】C++ 單例模式總結(5種單例實現方法)_單例模式c++實現-CSDN博客

#include<iostream>class LazySingle{
public:static LazySingle& getInstance(){static LazySingle instance;return instance;}void hello(){std::cout<<"Congratulations"<<std::endl;}private:LazySingle(){};
};
class LazySinglePtr{public:static LazySinglePtr* getInstance(){static LazySinglePtr instance;return &instance;}void hello(){std::cout<<"Congratulations"<<std::endl;}private:LazySinglePtr(){};
};class HungrySingle{
public:static HungrySingle& getInstance(){return instance_;}private:static HungrySingle instance_;HungrySingle(){};
};HungrySingle  HungrySingle::instance_;int main(){std::cout<<"懶漢引用模式:"<<std::endl;auto& lazy1=LazySingle::getInstance();LazySingle& lazy2=LazySingle::getInstance();std::cout<<" lzay1="<<&lazy1<<" lzay2="<<&lazy2<<" instance="<<&LazySingle::getInstance()<<std::endl;lazy1.hello();std::cout<<"懶漢指針模式:"<<std::endl;auto lazyptr1=LazySinglePtr::getInstance();LazySinglePtr* lazyptr2=LazySinglePtr::getInstance();std::cout<<" lzay1="<<lazyptr1<<" lzay2="<<lazyptr2<<" instance="<<LazySinglePtr::getInstance()<<std::endl;lazyptr1->hello();std::cout<<"餓漢模式:"<<std::endl;HungrySingle& hungry1=HungrySingle::getInstance();HungrySingle& hungry2=HungrySingle::getInstance();std::cout<<" hungry1="<<&hungry1<<" hungry2="<<&hungry2<<" instance="<<&HungrySingle::getInstance()<<std::endl;return 0;}

輸出:

懶漢引用模式:lzay1=0x7ff61a279e90 lzay2=0x7ff61a279e90 instance=0x7ff61a279e90
Congratulations
懶漢指針模式:lzay1=0x7ff61a279ee0 lzay2=0x7ff61a279ee0 instance=0x7ff61a279ee0
Congratulations
餓漢模式:hungry1=0x7ff61a2aa030 hungry2=0x7ff61a2aa030 instance=0x7ff61a2aa030

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75752.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RocketMQ初認識

ProducerCustomerNameServer: Broker的注冊服務發現中心BrokerServer:主要負責消息的存儲、投遞和查詢以及服務高可用保證 RocketMQ的集群部署&#xff1a; 單個master的分支多個Master 模式&#xff1a;集群中有多個 Master 節點&#xff0c;彼此之間相互獨立。生產者可以將消…

Maven/Gradle的講解

一、為什么需要構建工具? 在理解 Maven/Gradle 之前,先明確它們解決的問題: ??依賴管理??:項目中可能需要引入第三方庫(如 Spring、JUnit 等),手動下載和管理這些庫的版本非常麻煩。??標準化構建流程??:編譯代碼、運行測試、打包成 JAR/WAR 文件等步驟需要自動…

基于SSM的車輛管理系統的設計與實現(代碼+數據庫+LW)

摘要 當下&#xff0c;正處于信息化的時代&#xff0c;許多行業順應時代的變化&#xff0c;結合使用計算機技術向數字化、信息化建設邁進。以前企業對于車輛信息的管理和控制&#xff0c;采用人工登記的方式保存相關數據&#xff0c;這種以人力為主的管理模式已然落后。本人結…

嵌入式硬件篇---JSON通信以及解析

文章目錄 前言一、JSON特點語法簡單數據格式靈活輕量化跨語言使用二、JSON數據結構對象數組三、JSON在單片機之間通信的應用數據封裝與傳輸四、JSON示例代碼五、JSON在上位機與單片機之間通信的應用數據交互六、JSON示例代碼七、JSON解析與生成解析生成八、Python中的數據解析1…

【C#】.net core 6.0 依賴注入常見問題之一,在構造函數使用的類,都需要注入到容器里,否則會提示如下報錯,讓DeepSeek找找原因,看看效果

&#x1f339;歡迎來到《小5講堂》&#x1f339; &#x1f339;這是《C#》系列文章&#xff0c;每篇文章將以博主理解的角度展開講解。&#x1f339; &#x1f339;溫馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不對之處望指正&#xff01;&#…

《P1072 [NOIP 2009 提高組] Hankson 的趣味題》

題目描述 Hanks 博士是 BT&#xff08;Bio-Tech&#xff0c;生物技術) 領域的知名專家&#xff0c;他的兒子名叫 Hankson。現在&#xff0c;剛剛放學回家的 Hankson 正在思考一個有趣的問題。 今天在課堂上&#xff0c;老師講解了如何求兩個正整數 c1? 和 c2? 的最大公約數…

nginx的自動跳轉https

mkdir /usr/local/nginx/certs/ 創建一個目錄 然后用openssl生成證書 編輯nginx的配置文件 自動跳轉成功 做一個優化&#xff0c;如果訪問的時候后面加了其他的uri也一起自動跳轉了

力扣刷題——508.出現次數最多的子樹和

給你一個二叉樹的根結點 root &#xff0c;請返回出現次數最多的子樹元素和。如果有多個元素出現的次數相同&#xff0c;返回所有出現次數最多的子樹元素和&#xff08;不限順序&#xff09;。 一個結點的 「子樹元素和」 定義為以該結點為根的二叉樹上所有結點的元素之和&…

2025/4/2 心得

第一題 題目描述 給定1001個范圍在[1,1000]的數字&#xff0c;保證只有1個數字重復出現2次&#xff0c;其余數字只出現1次。試用O(n)時間復雜度來求出出現2次的這個數字。 不允許用數組 輸入格式 第一行&#xff1a;一個整數1001&#xff1b; 第二行&#xff1a;1001個用…

0基礎 | 硬件 | NE555芯片 二

目錄 “雙穩態電路之按鍵開關LED” 版本一&#xff1a; 版本二&#xff1a; “單穩態電路之延時自動關” 版本一 “無穩態電路之延時自動開關” 版本一&#xff1a; 版本二 “雙穩態電路之按鍵開關LED” 版本一&#xff1a; 按鍵1 使2腳輸入低電平&#xff0c;則3輸出…

Python實現鏈接KS3,并將文件數據上傳到KS3

前言 本文是該專欄的第55篇,后面會持續分享python的各種干貨知識,值得關注。 說到KS3,首先想到的是金山云提供的對象存儲服務。 相信或多或少的同學,在工作項目中也會遇到KS3相關的需求。比如說,現在有大批量的數據文件需要通過Python,上傳到KS3中。對此,需要怎么去做…

小白 解析thingsboard 規則鏈節點

目錄 1、filter(篩選器)節點內容 1. Alarm Status Filter(報警狀態過濾器) 2. Check Fields Presence(檢查字段存在性過濾器) 3. Check Relation Presence(檢查關系存在性過濾器) 4. Entity Type Filter(實體類型過濾器) 5. Message Type Filter(消息類型過濾器…

PgVectore的使用

PgVectore的使用 一、PgVector的安裝 參照博客&#xff1a;https://blog.csdn.net/u012953777/article/details/147013691?spm1001.2014.3001.5501 二、PgVector的使用 1、創建表與插入數據? ??定義向量字段??&#xff1a; CREATE TABLE items (id SERIAL PRIMARY …

python爬蟲爬取淘寶熱銷(熱門)男裝商品信息(課程設計;提供源碼、使用說明文檔及相關文檔;售后可聯系博主)

TOC 本文僅為記錄學習軌跡&#xff0c;如有侵權,聯系刪除 一、環境說明 使用前必須檢查以下環境 &#xff08;1&#xff09;python編譯環境 &#xff08;2&#xff09;python腳本執行所需要的庫&#xff0c;具體看代碼&#xff08;main.py&#xff09;import導入的部分庫 &a…

C++ 排序(1)

以下是一些插入排序的代碼 1.插入排序 1.直接插入排序 // 升序 // 最壞&#xff1a;O(N^2) 逆序 // 最好&#xff1a;O(N) 順序有序 void InsertSort(vector<int>& a, int n) {for (int i 1; i < n; i){int end i - 1;int tmp a[i];// 將tmp插入到[0,en…

計算機視覺圖像處理基礎系列:濾波、邊緣檢測與形態學操作

計算機視覺圖像處理基礎系列&#xff1a;濾波、邊緣檢測與形態學操作 一、前言二、濾波&#xff1a;圖像的精細化處理?2.1 濾波基礎概念?2.1.1 濾波的本質?2.1.2 圖像噪聲來源與類型? 2.2 線性濾波?2.2.1 均值濾波?2.2.2 高斯濾波? 2.3 非線性濾波?2.3.1 中值濾波? 三…

第八課:在SD中安裝拓展插件

3種拓展安裝方式教學 點擊Extensions安裝方式 經由內置列表查詢安裝&#xff0c;打開Available&#xff0c;輸入鏈接&#xff0c;點擊Load from:&#xff0c;然后篩選后點擊Install通過鏈接安裝&#xff0c;復制代碼倉庫地址&#xff0c;github/gitee&#xff0c;輸入Install …

tomcat的web三大組件Sciidea搭建web/maven的tomcat項目

文章目錄 1. web項目的搭建1. 創建web項目2.修改web.xml版本3.添加servlet、jsp依賴4.servlet示例&#xff08;使用注解&#xff09;5.配置tomcat6.添加artifact7.部署8.啟動tomcat、訪問9.打war包10.部署到tomcat 2.maven的項目搭建1.創建項目圖解 2.tomcat啟動方式圖解idea打…

ZKmall開源商城多云高可用架構方案:AWS/Azure/阿里云全棧實踐

隨著企業數字化轉型的加速&#xff0c;云計算服務已成為IT戰略中的核心部分。ZKmall開源商城作為一款高性能的開源商城系統&#xff0c;其在多云環境下的高可用架構方案備受關注。下面將結合AWS、Azure和阿里云三大主流云平臺&#xff0c;探討ZKmall的多云高可用架構全棧實踐。…

【代碼模板】如何用FILE操作符打開文件?fopen、fclose

#include "stdio.h" #include "unistd.h"int main(int argc, char *argv[]) {FILE *fp fopen("1.log", "wb");if (!fp) {perror("Failed open 1.log");return -1;}fclose(fp); }關于權限部分參考兄弟篇【代碼模板】C語言中…