day5--C++,靜態成員

再此記錄自己學習的過程,如有錯誤,歡迎大家指出。

最近上班累死了,都沒時間學習,今天繼續。

我們可以使用 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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章