靜態成員函式
單例模式
成員指標
靜態成員變數:
class 類名
; 資料型別 類名::變數 = 初值;//定義和初始化
類名::靜態成員變數;//推薦
物件.靜態成員變數;//和上面等價
#include
using
namespace std;
class
aint m_data;
static
int s_data;
//宣告};
//靜態成員變數的定義和初始化要在類的外部完成
int a::s_data =
100;
//定義
intmain
(void
)
class 類名
};
類名::靜態成員函式(實參表)
;//推薦
物件.靜態成員函式(實參表)
;//和上面等價
#include
using
namespace std;
class
astatic
void
func1
(void
)void
func2
(void
)int m_data;
static
int s_data;
//宣告};
int a::s_data =
100;
//定義
intmain
(void
)
概念:乙個類只允許存在唯一的物件,並提供它的訪問方法。
建立思路:
建立方式:
//單例模式:餓漢式
#include
using
namespace std;
class
singleton
void
print
(void
)const
private
://1)私有化建構函式
singleton
(int data=0)
:m_data
(data)
singleton
(const singleton&);
private
:int m_data;
//2)使用靜態成員變數表示唯一的單例物件
static singleton s_instance;};
singleton singleton::
s_instance
(12345);
intmain
(void
)
//單例模式:懶漢式
#include
using
namespace std;
class
singleton
//單例物件不用即銷毀
//單例物件可能有多個使用者,應該是最後
//乙個使用者用release才去delete
void
release
(void)}
void
print
(void
)const
private
://1)私有化建構函式
singleton
(int data=0)
:m_data
(data)
singleton
(const singleton&);
~singleton
(void
)private
:int m_data;
//2)使用靜態成員變數表示唯一的單例物件
static singleton* s_instance;
//計數:記錄單例物件使用者的個數
static
int s_count;};
singleton* singleton::s_instance =
null
;int singleton::s_count =0;
intmain
(void
)
型別 類名::*成員指標變數名 =
&類名::成員變數;
物件.*成員指標變數名;
物件指標->*成員指標變數名;
返回型別 (類名::*成員函式指標)
(形參表)
=&類名::成員函式名;
(物件.*成員函式指標)
(實參表)
(物件->*成員函式指標)
(實參表)
「.*」稱為直接成員解引用操作符
「->*」稱為間接成員解引用操作符
#include
using
namespace std;
class
student
void
who(
void
) string m_name;};
intmain
(void
)
C 指標 this指標 靜態成員
this指標指向呼叫的物件本身,在成員函式中,都會有乙個預設的引數this。這點如果學過python的話,可能會知道,在python中每乙個成員函式都會乙個引數self,這裡的this就是差不多的東西。其實具體來說,this指標也是指標,它儲存的也是乙個位址。當我們用乙個物件去呼叫乙個成員函式時,我...
C 靜態成員和非靜態成員
一 c 靜態成員和非靜態成員 1.c 靜態成員和非靜態成員 當類中的某個成員使用static修飾符時,就會被宣告為靜態成員。類中的成員要麼是靜態成員,要麼是非靜態成員。一般情況下,靜態成員屬於整個類所有,被該類的所有例項所共享。而非靜態成員則屬於類的例項 物件所有,只被該例項所共享。因此,對於類的靜...
C 靜態成員函式和this指標詳解
目錄 靜態成員就是在成員變數和成員函式前加上關鍵字static,稱為靜態成員 靜態成員分為 所有物件共享同乙份資料 在編譯階段分配記憶體 類內宣告,類外初始化 示例 include using namespace std class person int person m 0 類內宣告,類外初始化 ...