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)系作者