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