再此記錄自己學習的過程,如有錯誤,歡迎大家指出。
最近上班累死了,都沒時間學習,今天繼續。
我們可以使用 static 關鍵字來把類成員定義爲靜態的。當我們聲明類的成員爲靜態時,這意味着無論創建多少個類的對象,靜態成員都只有一個副本
舉個例子,如果我們要知道自己創建了多少個實例化對象,就可以用到這個靜態成員。
class Person //類成員全是public
{
private:
char *name;
int age;
char *work;
static int cnt; //類中靜態成員變量 不管創建多少個實例化對象。此變量始終都只有一個副本
public:
void setName(char *name);
void setAge(int age);
void setWork(char *work);
void cpp_printinfo(); //類中可以有函數成員
// Person(const Person &per);
Person(); //構造函數 可以重載
Person(char *name);
Person(char *name,int age,char *work="none");
static int getCnt(); //聲明函數要寫 static 使他屬於整個類
~Person();//析構函數
};
我們寫一個函數來計算創建了多少個對象。
int Person::getCnt() //定義函數不寫static
{
return cnt;
}
我們知道要在所有的構造函數中加上一句cnt++;就可以計算你到底申明瞭多少個實體化對象,在這裏我們給cnt分配空間,
並初始化。然後將信息打印出來。
int Person::cnt=0; //定義和初始化
int main(int argc,char **argv)
{
Person per1;
Person per2;
Person per3;
Person per4;
Person *per5=new Person[10];
cout<<"person num="<<Person::getCnt()<<endl;
return 0;
}
可以看到我們總共創建了14個實例化對象,cnt=14;