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 成員變量不隨對象的創建而分配內存,也不隨對象的銷毀而釋放內存。而普通成員變量在對象創建時分配內存,在對象銷毀時釋放內存

