資源描述:
《實(shí)驗(yàn)六__繼承三_——_多繼承及繼承的應(yīng)用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實(shí)驗(yàn)六繼承㈢——多繼承及繼承的應(yīng)用一、實(shí)驗(yàn)?zāi)康?.理解多繼承的概念,熟悉多繼承的定義及應(yīng)用;2.理解多繼承方式下的二義性產(chǎn)生原因,熟悉解決二義性的方法;3.進(jìn)一步熟悉繼承的綜合應(yīng)用。二、實(shí)驗(yàn)學(xué)時(shí)課內(nèi)實(shí)驗(yàn):2課時(shí)課外練習(xí):2課時(shí)三本實(shí)驗(yàn)涉及的新知識(shí)㈠多繼承的概念如果一個(gè)派生類由二個(gè)或二個(gè)以上的基類派生得到,稱為多重繼承(多繼承)㈡多繼承派生類的定義格式:class派生類名:繼承方式1,基類名1,繼承方式2,基類名2,…{派生類新定義的成員}㈢多繼承派生類的構(gòu)造函數(shù)1.定義格式:構(gòu)造函數(shù)名(總參數(shù)表):基類名1(
2、參數(shù)表1),基類名2(參數(shù)表2),…{構(gòu)造函數(shù)的函數(shù)體}2.說明⑴多繼承的構(gòu)造函數(shù)的總參數(shù)表必須提供所有基類構(gòu)造函數(shù)的值及新增數(shù)據(jù)成員的值。⑵定義派生類對象時(shí),多繼承方式下構(gòu)造函數(shù)的執(zhí)行順序?yàn)椋合葓?zhí)行所有基類的構(gòu)造函數(shù)(按排列順序)后執(zhí)行派生類的構(gòu)造函數(shù)。⑶釋放派生類對象時(shí),析構(gòu)函數(shù)的執(zhí)行順序與構(gòu)造函數(shù)的執(zhí)行順序相反。㈣多繼承派生類中為數(shù)據(jù)成員提供值的函數(shù)在多繼承方式下,為數(shù)據(jù)成員提供值的函數(shù)必須同時(shí)為所有基類的數(shù)據(jù)成員提供值。㈤多繼承的二義性1.同名函數(shù)產(chǎn)生的二義性在多重繼承方式下,如果在多個(gè)基類中有同名成
3、員函數(shù),可能出現(xiàn)二義性問題。解決辦法是在調(diào)用函數(shù)時(shí)使用類名及作用域運(yùn)算符。2.間接基類產(chǎn)生的二義性在多重繼承下,如果一個(gè)派生類由二個(gè)或以上基類派生得到,而這些基類又是由一個(gè)基類派生得到的,也會(huì)產(chǎn)生二義性。解決辦法是使用虛基類,即在定義直接基類時(shí),將間接基類說明為虛基類。定義格式:class直接基類名:virtual繼承方式間接基類名{派生類新定義的成員}1四、實(shí)驗(yàn)內(nèi)容㈠驗(yàn)證及認(rèn)知實(shí)驗(yàn)按要求調(diào)試下列程序,并回答相關(guān)問題。程序1(exp_601.cpp)#includeclassX{int
4、x;public:X(inta=0){x=a;}//基類X的構(gòu)造函數(shù)voidset_x(inta){x=a;}voidshow(void){cout<<"x="<5、=0,intc=0):X(a),Y(b){z=c;}//派生類Z的構(gòu)造函數(shù)voidset_xyz(inta,intb,intc){set_x(a);set_y(b);z=c;}voidshow_z(void){cout<<"z="<6、l;obj2.print();cout<7、eam.h>classbase{private:inta;public:base(intx){a=x;cout<<"Constructingbasea="<8、1,intx2):base(x1){c=x2;cout<<"Constructingbase2c="<