單例模式入門講解C++和Qt5

時千竣發表於2020-11-06
  • 為了幹嘛呢?

就是建立一個類,讓這個類的物件只有一個(比如叫session),並且在其他類中可以呼叫操作這個物件(session)的函式和屬性。 更專業的定義可以百度百科!

  • 需求:

1.用指標 2.物件導向的知識點 3.函式生成和使用 4.基礎語法(變數,資料型別等)

  • 程式碼講解
  1. 第一步:建構函式私有化

讓這個類只生成一個例項那麼把這個例項儲存在這個類中(儲存在靜態成員中- static)

class A
{
	private:
		A(){ }
		static A *m_pInstance;   
	//把這個例項儲存在這個類中_私有的靜態成員(儲存在靜態成員中- static)用這個指標來儲存。  
	這樣做是為了不讓其他檔案中隨意生成建立例項(只能在我們這個類的內部生成。
	所以需要一個介面來生成這個唯一的例項。這是第二步。
publicstatic A *createInstance(){
 		if (m_pInstance == NULL){
			m_pInstance = new A();
		}
		return m_pInstance;   //如果發現這個指標為空(沒有這個類的物件),那麼就生成一個,否則直接return 已經有的這個例項。
	}
	
	void test(){
		cout<<"this is a singleton instance";
}

所以:
第一步:將建構函式私有化,防止其他地方呼叫生成物件。(單例模式嘛,只能有一個類的物件)
第二步:將生成的唯一例項儲存在類的靜態成員裡。
第三步:要提供一個介面,用於生成或獲取這個例項。
注意:宣告全域性變數的時候不要在標頭檔案!

A *A::m_pInstance = NULL;

我在Qt5下用C++的原始碼如下。

.h檔案
在這裡插入圖片描述
上圖.h檔案對應的.cpp檔案。
在這裡插入圖片描述

其他類檔案中,修改使用單例類的屬性和函式- 結果演示圖:
在這裡插入圖片描述

相關文章