靜態成員變數存放於資料段,在編譯時產生,故有以下特性:
靜態成員變數實際為類域中的全域性變數,其初始化也應與全域性變數一樣,不能再標頭檔案裡初始化,應與全域性變數初始化的方式一樣,初始化時,靜態成員變數不收訪問限定符限定
test.cpp:
class a
;int a::_num = 0;//初始化成功
靜態成員變數被類內所有成員變數共享,也被派生類所有成員變數共享
class b :public a
;int main()
靜態成員變數具有常量性,可以成為成員類的可選引數,普通成員變數不具有常量性,所以不能作為成員函式的可選引數
class b :public a
void fun1(int a = num)//報錯
private:
int num;
};
靜態成員變數可以宣告為所屬類型別,鋪同成員變數不可以宣告為所屬類型別,只能宣告為所屬類型別的引用與指標(節點就是這麼來的)
class b :public a
void fun1(int a = num)//報錯
private:
int num;
static b _bclass;//正確
b _b1class;//錯誤
b* _bclassptr;//正確,為一指標
b &_b2class;//錯誤,為一引用
};
由於靜態成員變數定義不在類體內,所以靜態資料成員的值在const成員函式中可以被合法的改變。
class a
;int a::_num = 0;//初始化成功
class b :public a
private:
int num;
};
本文出自 「pawnsir的it之路」 部落格,請務必保留此出處
C 靜態成員變數及靜態成員函式
靜態成員變數 含義 在類的成員變數前加上static關鍵字,就是把該變數宣告為靜態成員變數。特點 1 靜態成員變數在記憶體中只有乙份,所有的類物件全域性共用它。2 在類中對成員變數加上static關鍵字,進行變數的型別申明。在內的外部對其進行初始化。初始化方法 資料型別 類名 變數名 初始化值 3 ...
c 靜態變數,靜態成員變數,靜態成員函式
c 靜態變數的生存期和程式的執行期相同,使用關鍵字static宣告 static int i 5 靜態變數和全域性變數有點類似,儲存在記憶體靜態 全域性變數區。靜態變數不會因為函式的呼叫而產生乙個副本,也不會隨著函式返回而失效,靜態變數在函式執行期間是共享的。c 類的靜態成員是解決同乙個類的不同物件...
C 靜態成員變數,靜態成員函式
資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...