您好,登錄后才能下訂單哦!
1.通過對象名能夠訪問public成員變量
2.每個對象的成員變量都是專屬的
3.成員變量不能在對象之間共享
Q:新的需求
1.統(tǒng)計在程序運行期間某個類的對象數(shù)目
2.保證程序的安全性(不能使用全局變量)
3.隨時可以獲取當(dāng)前對象的數(shù)目
代碼示例
#include <iostream>
using namespace std;
class Test
{
private:
int mCount;
public:
Test() : mCount(0)
{
mCount++;
}
~Test()
{
--mCount;
}
int getCount()
{
return mCount;
}
};
Test gTest;
int main()
{
Test t1;
Test t2;
cout<<"gTest.getCount()="<<gTest.getCount()<<endl;
cout<<"t1.getCount()="<<t1.getCount()<<endl;
cout<<"t2.getCount()="<<t2.getCount()<<endl;
return 0;
}
運行結(jié)果如圖所示
出現(xiàn)該結(jié)果的原因是定義的mCount在每個對象構(gòu)造時單單獨生成,所以輸出的Count個數(shù)也為1
A.在C++中可以定義靜態(tài)成員變量
1.靜態(tài)成員變量屬于整個類所有
2.靜態(tài)成員變量的生命期不依賴于任何對象
3.可以通過類名直接訪問公有靜態(tài)成員變量
4.所有對象共享類的靜態(tài)成員變量
5.可以通過對象名訪問公有靜態(tài)成員變量
B.靜態(tài)成員變量的特性
1.在定義時直接通過static關(guān)鍵字修飾
2.靜態(tài)成員變量需要在類外單獨分配空間
3.靜態(tài)成員變量在程序內(nèi)部位于全局?jǐn)?shù)據(jù)區(qū)
語法規(guī)則:Type ClassName:VarName=value
代碼示例
#include <iostream>
using namespace std;
class Test
{
private:
static int mCount;
public:
Test()
{
mCount++;
}
~Test()
{
--mCount;
}
int getCount()
{
return mCount;
}
};
int Test::mCount=0;
Test gTest;
int main()
{
Test t1;
Test t2;
cout<<"gTest.getCount()="<<gTest.getCount()<<endl;
cout<<"t1.getCount()="<<t1.getCount()<<endl;
cout<<"t2.getCount()="<<t2.getCount()<<endl;
return 0;
}
運行結(jié)果如圖所示
小結(jié):
1.類中可以通過static關(guān)鍵定義靜態(tài)成員變量
2.靜態(tài)成員變量隸屬于類所有
3.每一個對象都可以訪問靜態(tài)成員變量
4.靜態(tài)成員變量在全局?jǐn)?shù)據(jù)區(qū)分配空間
5.靜態(tài)成員變量的生命期為程序運行期
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。