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