12-成員變量的初始化

寫在前面

成員變量-很差解釋,你們都懂就是成員變量
struct Person {
    int age;
};
age 就是成員變量
複製代碼

名詞解釋

構造函數(也叫構造器),在對象建立的時候自動調用,通常用於完成對象的初始化工做
複製代碼

碼上建功

struct Person {
    int m_age;
};
// 全局區(成員變量初始化爲0)
Person g_person;

int main() {
    // 棧空間(成員變量沒有初始化)
    Person person;
    // 堆空間
    Person *p1 = new Person; // 成員變量沒有初始化
    Person *p2 = new Person(); // 成員變量有初始化
    
    cout << "g_person " << g_person.m_age << endl;
    cout << "p1 " << p1->m_age << endl;
    cout << "p2 " << p2->m_age << endl;
}
看下打印結果
g_person 0
p1 0
p2 0
能夠看出,成員的初始化後 m_age默認爲0

"看下有構造函數的成員初始化狀況"
struct Person {
    int m_age;
    Person() {
     this->m_age = 3;
    }
};

// 全局區(成員變量初始化爲0)
Person g_person;

int main() {
    // 棧空間(成員變量沒有初始化)
    Person person;
    // 堆空間
    Person *p1 = new Person; // 成員變量沒有初始化
    Person *p2 = new Person(); // 成員變量有初始化
    
    cout << "g_person " << g_person.m_age << endl;
    cout << "p1 " << p1->m_age << endl;
    cout << "p2 " << p2->m_age << endl;
}
打印結果:
g_person 3
p1 3
p2 3
能夠看出,成員的初始化後 m_age默認爲設置的值
複製代碼

裝逼一下

若是自定義了構造函數,除了全局區,
其餘內存空間的成員變量默認都不會被初始化,須要開發人員手動初始化
複製代碼

完整代碼demo,請移步GitHub:DDGLearningCppgit

固然C++大神就繞吧,非喜勿噴,畢竟這是我的的學習筆記📒github

相關文章
相關標籤/搜索