C++中的static成員變量主要用來為多個對象共享數據
例:
#include <iostream> using namespace std; class Student{ public: Student(char *name, int age, float score); void show(); private: static int m_total; //靜態成員變量 private: char *m_name; int m_age; float m_score; }; //初始化靜態成員變量 int Student::m_total = 0; Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ m_total++; //操作靜態成員變量 } void Student::show(){ cout<<m_name<<"的年齡是"<<m_age<<",成績是"<<m_score<<"(當前共有"<<m_total<<"名學生)"<<endl; } int main(){ //創建匿名對象 (new Student("小明", 15, 90)) -> show(); (new Student("李磊", 16, 80)) -> show(); (new Student("張華", 16, 99)) -> show(); (new Student("王康", 14, 60)) -> show(); return 0; }
運行結果:
小明的年齡是15,成績是90(當前共有1名學生)
李磊的年齡是16,成績是80(當前共有2名學生)
張華的年齡是16,成績是99(當前共有3名學生)
王康的年齡是14,成績是60(當前共有4名學生)
需要注意的是:
1.static成員變量必須在類聲明的外部進行初始化。例如上面的代碼:int Student::m_total = 0;
2.static成員變量和普通static變量一樣,都在內存分區的全局數據區分配內存,到程序結束后釋放。這就意味着,static 成員變量不隨對象的創建而分配內存,也不隨對象的銷毀而釋放內存。而普通成員變量在對象創建時分配內存,在對象銷毀時釋放內存。
