寫在前面
成員變數-不好解釋,大家都懂就是成員變數
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:DDGLearningCpp
當然C++大神就繞吧,非喜勿噴,畢竟這是個人的學習筆記?