7.6 類的靜態(tài)成員
靜態(tài)成員的特性
- 靜態(tài)成員屬于類,而不是對(duì)象。
- 類型可以是類對(duì)象、指針、引用、常量等。
- 靜態(tài)成員函數(shù)不能聲明為const類型。
使用靜態(tài)成員
- 類外使用作用域符::訪問(wèn)。
- 當(dāng)然也可以通過(guò)類對(duì)象訪問(wèn),例如a.static()。
- 成員函數(shù)訪問(wèn)時(shí)無(wú)需通過(guò)作用域符。
定義靜態(tài)成員
- 類外定義時(shí)不能再使用static關(guān)鍵字。
- 一般在類的外部和初始化靜態(tài)成員。
- 靜態(tài)成員只能定義一次,存在于程序的整個(gè)生命周期內(nèi)。
- 即使在類內(nèi)初始化了靜態(tài)成員,在類外最好也定義一次,當(dāng)然不能再初始化它了。
- 如果在類內(nèi)初始化靜態(tài)成員,靜態(tài)成員必須是字面值常量的constexpr,為其提供const整數(shù)類型的初始化值,例如:
class A
{
public:
static constexpr int val = 30;
int array[val];
}
靜態(tài)成員和普通成員的一些區(qū)別
- 靜態(tài)成員可以作為函數(shù)的默認(rèn)實(shí)參,例如
class A
{
public:
void setAge(int age = default);
static const int default;
}
- 靜態(tài)成員可以像指針一樣是不完整類型,例如
class A
{
public:
void setAge(int age = default);
static A instance; //正確
A* m_pA; //正確
A m_a; //錯(cuò)誤
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。