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