構(gòu)造函數(shù)
當(dāng)我們需要在對象創(chuàng)建時(shí)初始化一些數(shù)據(jù)的時(shí)候电抚,我們不可能提供一個(gè)普通的成員方法供程序猿在對象創(chuàng)建后調(diào)用涵防。因?yàn)槿绻绦蛟彻室饣蛘邿o意間忘記了調(diào)用該方法,就可能導(dǎo)致程序出現(xiàn)偏離預(yù)期的結(jié)果。為了防止這種情況的發(fā)生歉提,C++中提供了一種特殊的成員函數(shù)–構(gòu)造函數(shù)态兴。構(gòu)造函數(shù)具有如下特點(diǎn):
各種構(gòu)造函數(shù)
默認(rèn)構(gòu)造函數(shù) vs無參構(gòu)造函數(shù)
當(dāng)我們沒有顯式的在聲明中添加構(gòu)造方法時(shí)瞻润,編譯器會默認(rèn)提供一個(gè)空參列表且沒有任何行為的默認(rèn)構(gòu)造方法喘垂,就像下面這樣 :Student(){}
拷貝構(gòu)造函數(shù)
拷貝構(gòu)造函數(shù),又稱復(fù)制構(gòu)造函數(shù)绍撞,是一種特殊的構(gòu)造函數(shù)正勒,它由編譯器調(diào)用來完成一些基于同一類的其他對象的構(gòu)建及初始化。其形參必須是引用傻铣,但并不限制為const
綜合案例
不同得構(gòu)造函數(shù)有不同得作用,測試函數(shù)如下:
析構(gòu)函數(shù)
析構(gòu)函數(shù)(destructor) 與構(gòu)造函數(shù)相反鸭限,當(dāng)對象結(jié)束其生命周期,如對象所在的函數(shù)已調(diào)用完畢時(shí)两踏,系統(tǒng)自動(dòng)執(zhí)行析構(gòu)函數(shù)败京。析構(gòu)函數(shù)往往用來做“清理善后” 的工作(例如在建立對象時(shí)用new開辟了一片內(nèi)存空間,delete會自動(dòng)調(diào)用析構(gòu)函數(shù)后釋放內(nèi)存)缆瓣。
當(dāng)程序中沒有析構(gòu)函數(shù)時(shí)喧枷,系統(tǒng)會自動(dòng)生成析構(gòu)函數(shù),析構(gòu)函數(shù)有如下特點(diǎn):
注意:C++基礎(chǔ)教程隧甚,并不是構(gòu)造函數(shù)和析構(gòu)函數(shù)得全部內(nèi)容