C/C++編程筆記:C++單例模式詳細(xì)解析!從零開始學(xué)懂單例
單例模式定義
該類負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類提供了一種訪問其唯一的對(duì)象的方式,可以直接訪問,不需要實(shí)例化該類的對(duì)象。
在C++中,我個(gè)人的理解是,不需要自己new類指針,這樣一方面也方便程序員自己管理內(nèi)存,另一方面可以節(jié)省系統(tǒng)指針,減少占用內(nèi)存資源。

單例模式的實(shí)現(xiàn)要求
簡(jiǎn)單的來說,就是一個(gè)類要有唯一的單例,而且這個(gè)單例類能夠被其他對(duì)象所調(diào)用,不能用,那就沒意義了嘛 。
單例模式的代碼實(shí)現(xiàn)
前面兩個(gè)定義和實(shí)現(xiàn)要求理解之后,讓我們來看看單例模式是如何在C++中被巧妙地利用。
首先看一下使用單例模式的類
頭文件單例類的定義如下:

其中定義了單例成員指針m_Instance或獲取單例指針的方式
還定義了類CGarbage 用于釋放單例指針
接下來是實(shí)現(xiàn)cpp文件

這里面很容易看出來?getSingleton()函數(shù)用來new單例指針 判斷是否單例指針存在,這樣的好處 是可以保證整個(gè)類的全局指針 只占用一個(gè)內(nèi)存地址,無需每次都要new
接下來看一下測(cè)試代碼

運(yùn)行程序 :

可以明顯的看出,只產(chǎn)生了一個(gè)實(shí)例指針,這樣很方便我們?nèi)ス芾韮?nèi)存,也不占用內(nèi)存資源
接下來看一下不用單例模式的常規(guī)類會(huì)有什么不一樣
頭文件

定義了一個(gè)人的類 里面一個(gè)walk方法
實(shí)現(xiàn)

很簡(jiǎn)單 和上面一樣
接下來看一下測(cè)試代碼

測(cè)試代碼也很簡(jiǎn)單
new了兩個(gè)指針 然后執(zhí)行walk函數(shù) 最后看一下地址 然后釋放內(nèi)存
看一下運(yùn)行結(jié)果:

可以明顯看出 這個(gè)產(chǎn)生了兩個(gè)內(nèi)存,如果在大型項(xiàng)目當(dāng)中 需要在不同的文件當(dāng)中引用類,很明顯,對(duì)于程序本身占用內(nèi)存 是個(gè)負(fù)擔(dān),而且 很容易造成內(nèi)存泄漏的現(xiàn)象,所以單例模式的優(yōu)勢(shì)也顯而易見,可以盡可能占用少的內(nèi)存,并且及其易于管理內(nèi)存,希望借著兩個(gè)例子,能夠給大家?guī)硪稽c(diǎn)啟發(fā)。
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!
C語言C++編程學(xué)習(xí)交流圈子,【點(diǎn)擊進(jìn)入】微信公眾號(hào):C語言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

另外,UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~
編程學(xué)習(xí)書籍分享:

編程學(xué)習(xí)視頻分享:
