6-1構(gòu)造函數(shù)
1.內(nèi)存分區(qū)
內(nèi)存分區(qū).png
2.對(duì)象結(jié)構(gòu)
對(duì)象在被實(shí)例化之前鹅经,并不占用堆中或棧中的內(nèi)存空間。
對(duì)象結(jié)構(gòu).png
實(shí)例化的三個(gè)car對(duì)象贷痪,每個(gè)對(duì)象都會(huì)在棧上開辟一片內(nèi)存劫拢。私有變量都不相同强胰,占據(jù)著不同的內(nèi)存。
而int getWheelCount()的邏輯代碼在內(nèi)存的代碼區(qū)熟吏,只編譯出一份玄窝,供所有的對(duì)象使用。誰需要誰使用帽氓,找到函數(shù)入口就可以進(jìn)行調(diào)用俩块。
3.對(duì)象初始化
(1)有且只有一次的初始化動(dòng)作
? 構(gòu)造函數(shù),避免忘記或重復(fù)進(jìn)行初始化势腮。
? 構(gòu)造函數(shù)的規(guī)則:
構(gòu)造函數(shù)的規(guī)則.png
? 構(gòu)造函數(shù)的特點(diǎn):
構(gòu)造函數(shù)的特點(diǎn).png
? 無參構(gòu)造函數(shù):
class Student{
public:
Student(){
m_strName = "Jim";
}
private:
string m_strName;
}
? 有參構(gòu)造函數(shù):
class Student{
public:
Student(string _name){
m_strName = _name;
}
private:
string m_strName;
}
? 重載構(gòu)造函數(shù):
class Student{
public:
Student(string _name){
m_strName = _name;
}
Student(string _name){
m_strName = _name;
}
private:
string m_strName;
}
(2)根據(jù)條件進(jìn)行初始化動(dòng)作