C 類靜態成員與類靜態成員函式

2021-07-22 01:45:26 字數 1171 閱讀 4375

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。

靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。

靜態資料成員不能在類中初始化,也

不可在類體內進行賦值,因為它是被所有該類的物件所共享的。

靜態成員可以被初始化,但只能在類體外進行初始化。

一般形式:

資料型別類名::靜態資料成員名=初值

舉個例子:

class myclass

;int myclass::sum=0; 

//定義並初始化靜態資料成員

myclass::myclass(int a,int b,int c)

void myclass::getsum()

關於靜態成員函式,可以總結為以下幾點:

1.靜態成員之間可以相互訪問,包括靜態成員函式訪問靜態資料成員和訪問靜態成員函式;

非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員;

靜態成員函式訪問非靜態成員函式和非靜態資料成員的方式---

靜態函式成員必須通過物件名來訪問非靜態資料成員。言下之意,我們可以通過傳入this指標

(或乙個物件名

)的方式訪問非靜態成員

,又或者在靜態成員函式內new乙個物件,通過其呼叫非靜態成員。

2.由於沒有this指標的額外開銷,因此靜態成員函式與類的全域性函式相比速度上會有少許的增長;

3.呼叫靜態成員函式,可以用成員訪問操作符(.)和(->)為乙個類的物件或指向類物件的指標呼叫靜態成員函式,

當同一類的所有物件使用乙個量時,對於這個共用的量,可以用靜態資料成員變數,這個變數對於同一類的所有的物件都取相同的值。靜態資料成員的用途之一是統計有多少個物件實際存在。

4.靜態成員仍然遵循public,private,protected訪問準則。

5.靜態成員函式沒有this指標,它不能返回非靜態成員,因為除了物件會呼叫它外,類本身也可以呼叫。

靜態函式成員必須通過物件名來訪問非靜態資料成員。言下之意,我們可以通過傳入this指標

(或乙個物件名

)的方式訪問非靜態成員

,又或者在靜態成員函式內new乙個物件,通過其呼叫非靜態成員。

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...