1.構(gòu)造方法(函數(shù))
構(gòu)造方法是一種特殊的成員方法,與其他成員方法不同:
構(gòu)造方法的名字必須與類名相同;
無(wú)類型、可有參數(shù)、可重載
會(huì)自動(dòng)生成,可自定義
一般形式:類名(形參);
例: Stu(int age);
當(dāng)用戶沒(méi)自定義構(gòu)造方法時(shí),系統(tǒng)將會(huì)執(zhí)行默認(rèn)構(gòu)造方法,當(dāng)用戶自定義一個(gè)或多個(gè)構(gòu)造方法后,在創(chuàng)建對(duì)象時(shí),系統(tǒng)會(huì)根據(jù)用戶的傳參選擇其中一個(gè)構(gòu)造方法執(zhí)行。
執(zhí)行時(shí)間:創(chuàng)建對(duì)象后馬上執(zhí)行。
功能:一般功能是初始化對(duì)象成員變量,可根據(jù)自己需求定義。
注意:創(chuàng)建一個(gè)對(duì)象只會(huì)選擇執(zhí)行一個(gè)構(gòu)造方法,且創(chuàng)建了帶參的構(gòu)造方法,必須再創(chuàng)建一個(gè)不帶參的構(gòu)造方法,除非每次創(chuàng)建的對(duì)象都是帶參的。
下例中有兩個(gè)構(gòu)造函數(shù),創(chuàng)建am1不帶參觸發(fā)不帶參的構(gòu)造函數(shù),什么也不執(zhí)行,創(chuàng)建am2帶參觸發(fā)對(duì)應(yīng)的帶參構(gòu)造函數(shù),打印提示信息如下
2.拷貝(復(fù)制) 構(gòu)造函數(shù):
拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),通常用于復(fù)制一個(gè)對(duì)象的內(nèi)容給另一個(gè)對(duì)象,以實(shí)現(xiàn)對(duì)象的拷貝操作。
系統(tǒng)會(huì)自動(dòng)生成(淺拷貝),可自定義。
一般形式:類名(const 類名& obj)
?例:Stu(const Stu& obj);
觸發(fā)拷貝構(gòu)造函數(shù):Stu stu2(stu1);? ? ?//將stu1的內(nèi)容拷貝給stu2
淺拷貝:當(dāng)成員變量中有指針時(shí),淺拷貝會(huì)將拷貝對(duì)象指針與被拷貝對(duì)象指針指向同一空間,兩個(gè)指針操作時(shí)操作的都是被拷貝對(duì)象指針指向的空間(系統(tǒng)默認(rèn))。
如下am1指針指向am1的age,將am1的內(nèi)容拷貝給am2后,am2的指針等于am1的指針,也指向am1的age,則通過(guò)am2指針改變的是am1.age的值
由于淺拷貝指針指向的不合理,由此有個(gè)深拷貝。
深拷貝:可讓自己的指針只指向自己的變量(用戶自定義) 。
?
?
?3.析構(gòu)函數(shù):
析構(gòu)函數(shù)的名字是在類名前面加一個(gè)"~"符號(hào)。
無(wú)類型、無(wú)參數(shù)、無(wú)重載
會(huì)自動(dòng)生成,可自定義
一般形式:~Stu();
功能:一般功能為完成"清理"工作,如:銷毀malloc創(chuàng)建的動(dòng)態(tài)存儲(chǔ)空間。
執(zhí)行時(shí)間:在對(duì)象生命周期結(jié)束前自動(dòng)觸發(fā),出發(fā)后再結(jié)束生命
如下并未手動(dòng)調(diào)用,在創(chuàng)建對(duì)象是會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù),在對(duì)象生命周期結(jié)束前自動(dòng)調(diào)用析構(gòu)函數(shù)。
?
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-674194.html文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-674194.html
?
到了這里,關(guān)于C++:構(gòu)造方法(函數(shù));拷貝(復(fù)制)構(gòu)造函數(shù):淺拷貝、深拷貝;析構(gòu)函數(shù)。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!