6-1構造函數
1.內存分區
內存分區.png
2.對象結構
對象在被實例化之前,并不占用堆中或棧中的內存空間。
對象結構.png
實例化的三個car對象,每個對象都會在棧上開辟一片內存。私有變量都不相同,占據著不同的內存。
而int getWheelCount()的邏輯代碼在內存的代碼區,只編譯出一份,供所有的對象使用。誰需要誰使用,找到函數入口就可以進行調用。
3.對象初始化
(1)有且只有一次的初始化動作
? 構造函數,避免忘記或重復進行初始化。
? 構造函數的規則:
構造函數的規則.png
? 構造函數的特點:
構造函數的特點.png
? 無參構造函數:
class Student{
public:
Student(){
m_strName = "Jim";
}
private:
string m_strName;
}
? 有參構造函數:
class Student{
public:
Student(string _name){
m_strName = _name;
}
private:
string m_strName;
}
? 重載構造函數:
class Student{
public:
Student(string _name){
m_strName = _name;
}
Student(string _name){
m_strName = _name;
}
private:
string m_strName;
}
(2)根據條件進行初始化動作