C++ static靜態(tài)成員
小林coding
基本概念
靜態(tài)成員:在定義前面加了 static 關鍵詞的成員。
以下面的代碼例子,來學習 static 關鍵詞:
輸出結(jié)果:
2
4
01 靜態(tài)成員變量
普通成員變量每個對象有各自的一份,而靜態(tài)成員變量一共就一份,為所有對象共享。
這里需要注意的是 sizeof 運算符不會計算靜態(tài)成員變量的大小,如下栗子:
class CTest
{
int n;
static int s;
};
則 sizeof(CTest) 等于 4
02 靜態(tài)成員函數(shù)
普通成員函數(shù)必須具體作用于某個對象,而靜態(tài)成員函數(shù)并不具體作用于某個對象。
因此靜態(tài)成員變量和靜態(tài)成員函數(shù)不需要通過對象就能訪問,因為他是共享的。
訪問靜態(tài)成員的方式
01 類名::成員名
A::PrintNum();
02 對象名.成員名
A a;
a.PrintNum();
03 指針->成員名
A *p = new A();
p->PrintNum();
04 引用.成員名
A a;
A & ref = a;
ref.PrintNum();
小結(jié)
1. 靜態(tài)成員變量本質(zhì)上是全局變量,哪怕一個對象都不存在,類的靜態(tài)成員變量也存在;
2. 靜態(tài)成員函數(shù)本質(zhì)上是全局函數(shù);
3. 設置靜態(tài)成員這種機制的目的是將和某些緊密相關的全局變量和函數(shù)寫在類里面,看上去像是一個整體,易于維護和理解;
4. 在靜態(tài)成員函數(shù)中,不能訪問非靜態(tài)成員變量,也不能調(diào)用非靜態(tài)成員函數(shù);
5. 靜態(tài)成員必須在定義類的文件中對靜態(tài)成員變量進行初始化,否則會編譯出錯。
小林coding
免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!