派生類繼承基類構(gòu)造函數(shù)

簡(jiǎn)單的派生類的構(gòu)造函數(shù)

#include<iostream>

#include<string>

usingnamespacestd;

classStudent//聲明基類

{

protected:

intnum;

stringname;

charsex;

public:

Student(intn,stringnam,chars)//定義基類(含參)構(gòu)造函數(shù)

{

num=n;

name=nam;

sex=s;

}

};

classStudent1:publicStudent//聲明公用派生類Student1

{

private:

intage;

stringaddr;

public:

Student1(intn,stringnam,chars,inta,stringad):Student(n,nam,s)

//定義派生類構(gòu)造函數(shù)

{

age=a;

addr=ad;

}

voidshow()

{

cout<<"num:"<

cout<<"name:"<

cout<<"sex:"<

cout<<"age:"<

cout<<"address"<

}

~Student1 (){}

};

?派生類構(gòu)造函數(shù)首行的寫法

Student1(intn,stringnam,chars,inta,stringad):Student(n,nam,s)

派生類構(gòu)造函數(shù)一般形式為

派生類構(gòu)造函數(shù)名(總參數(shù)表):基類構(gòu)造函數(shù)名(參數(shù)表)

? ? ? ? {派生類中新增數(shù)據(jù)成員初始化語(yǔ)句}

冒號(hào)“:”前面部分是派生類構(gòu)造函數(shù)的主干,他和以前介紹過(guò)的構(gòu)造函數(shù)的形式相同,但它的總參數(shù)表中包括基類構(gòu)造函數(shù)所需的參數(shù)和對(duì)派生類新增的數(shù)據(jù)成員初始化所需的參數(shù)。冒號(hào)“:”后面部分是要調(diào)用的基類構(gòu)造函數(shù)及其參數(shù)。

? ? ? ?從上面列出的派生類Student1構(gòu)造函數(shù)首行中可以看到,派生類構(gòu)造函數(shù)名(Student1)后面括號(hào)內(nèi)的參數(shù)表中包括參數(shù)的類型和參數(shù)名(如int n) ,而基類構(gòu)造函數(shù)名后面括號(hào)內(nèi)的參數(shù)表列只有參數(shù)名而不包括參數(shù)類型(如n,num,s),因?yàn)樵谶@里不是定義基類構(gòu)造函數(shù),而是調(diào)用基類構(gòu)造函數(shù),因此這些參數(shù)是實(shí)參而不是形參。它們可以是常量、全局變量和派生類構(gòu)造參數(shù)總參數(shù)表中的參數(shù)。

? ? ? ?從上面列出的派生類Student1構(gòu)造函數(shù)中可以看到:調(diào)用基類構(gòu)造函數(shù)Student時(shí)給出3個(gè)參數(shù)(n,nam,s),這是和定義基類構(gòu)造函數(shù)時(shí)指定的參數(shù)相匹配的。派生類構(gòu)造函數(shù)Student1有5個(gè)參數(shù),其中前3個(gè)是用來(lái)傳遞給基類構(gòu)造函數(shù),后面兩個(gè)(a和ad)是用來(lái)對(duì)派生類所增加的數(shù)據(jù)成員初始化的。

2.派生類的析構(gòu)函數(shù)

析構(gòu)函數(shù)的作用是在對(duì)象撤銷之前,進(jìn)行必要的清理工作。

在派生時(shí),派生類是不能繼承基類的析構(gòu)函數(shù)的,也需要通過(guò)派生類的析構(gòu)函數(shù)去調(diào)用基類的析構(gòu)函數(shù)。在派生類中可以根據(jù)需要定義自己的析構(gòu)函數(shù),用來(lái)地派生類中所增加的成員進(jìn)行清理工作?;惖那謇砉ぷ魅稳挥苫惖奈鰳?gòu)函數(shù)負(fù)責(zé)。

調(diào)用的順序與構(gòu)造函數(shù)正好相反:先執(zhí)行派生類自己的析構(gòu)函數(shù),對(duì)派生類新增加的成員進(jìn)行清理,然后調(diào)用子對(duì)象的析構(gòu)函數(shù),對(duì)子對(duì)象進(jìn)行清理,最后調(diào)用基類的析構(gòu)函數(shù),對(duì)基類進(jìn)行清理。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容