C++中靜態成員變量的可以在類內初始化嗎?


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM