C課件繼承多繼承

C課件繼承多繼承

ID:45068925

大?。?16.00 KB

頁數(shù):21頁

時(shí)間:2019-11-09

C課件繼承多繼承_第1頁
C課件繼承多繼承_第2頁
C課件繼承多繼承_第3頁
C課件繼承多繼承_第4頁
C課件繼承多繼承_第5頁
資源描述:

《C課件繼承多繼承》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、繼承與派生繼承與派生1繼承概述2基類和派生類3派生類的構(gòu)造與析構(gòu)4多繼承多繼承舉例兼職技術(shù)人員管理人員銷售人員銷售經(jīng)理雇員多繼承一個(gè)類有多個(gè)直接基類的繼承關(guān)系稱為多繼承多繼承聲明語法class派生類名:訪問控制基類名1,…,訪問控制基類名n{數(shù)據(jù)成員和成員函數(shù)聲明};多繼承classC:publicA,publicBclassAclassB類C可以根據(jù)訪問控制同時(shí)繼承類A和類B的成員,并添加自己的成員多繼承的簡單應(yīng)用classBase1{public:Base1(intx){value=x;}intgetData()const{returnvalue;}protected:intva

2、lue;};classBase2{public:Base2(charc){letter=c;}chargetData()const{returnletter;}protected:charletter;};7.5.1多繼承的派生類構(gòu)造和訪問多繼承的簡單應(yīng)用classDerived:publicBase1,publicBase2{public:Derived(int,char,double);doublegetReal()const;private:doublereal;};voidmain(){Base1b1(10);Base2b2('k');Derivedd(5,'A',2.5);

3、}'K'2.5'A'510valueletterrealBasc1b1Basc2b2Derivedd多個(gè)基類的派生類構(gòu)造函數(shù)用初始化列表調(diào)用基類構(gòu)造函數(shù),執(zhí)行順序與單繼承構(gòu)造函數(shù)情況類似。多個(gè)直接基類構(gòu)造函數(shù)執(zhí)行順序取決于定義派生類時(shí)指定的各個(gè)繼承基類的順序。按基類在被繼承時(shí)所聲明的次序從左到右依次調(diào)用。多繼承的派生類構(gòu)造一個(gè)派生類對象擁有多個(gè)直接或間接基類的成員。不同名成員訪問不會(huì)出現(xiàn)二義性。如果不同的基類有同名成員,派生類對象訪問時(shí)應(yīng)該加以識別。多繼承的派生類訪問由于多繼承情況下,可能造成對基類中某個(gè)成員的訪問出現(xiàn)了不惟一的情況,則稱為對基類成員訪問的二義性問題。多重繼承圖示Af

4、()CA::f();B::f();B::g();g();h();Bf();g();二義性和支配原則classC:publicA,publicB{?public:voidg();voidh();};若有Cobj;則對函數(shù)f()的訪問是二義的:obj.f();classA{public:voidf();};classB{public:voidf();voidg();};二義性和支配原則1.同名成員的二義性不同基類中有同名函數(shù),使用基類名可避免這種二義:基類與派生類同名函數(shù)這種用基類名來控制成員訪問的規(guī)則稱為支配原則。voidC::f(){A::f();//B::f();}obj.A::f

5、();obj.B::f();obj.g();//隱含用C的g()obj.B::g();//用B的g()二義性和支配原則2.同一基類被多次繼承產(chǎn)生的二義性一個(gè)類不能從同一類直接繼承二次或更多次。classC:publicB1,publicB2classB1classB2classBclassB{public:intb;};classB1:publicB{intb1;};classB2:publicB{intb2;};classC:publicB1,publicB2{public:intf();private:intd;};有:Cobj;obj.b;//errorojb.B::b;//e

6、rror,從哪里繼承的?classC{f(),d}classB1{b1}classB2{b2}classB{bb}classB{bb}obj.B1::bobj.B2::b二義性和支配原則例如:classB{public:intb;};classB1:publicB{intb1;};classB2:publicB{intb2;};classC:publicB1,publicB2{public:intf();private:intd;};classC{f(),d}classB1{b1}classB2{b2}classBclassBc.bc.b1c.bc.b2c.dBBB1B2

7、C多重派生類C的對象的存儲(chǔ)結(jié)構(gòu)示意建立C類的對象時(shí),B的構(gòu)造函數(shù)將被調(diào)用兩次:分別由B1調(diào)和B2調(diào)用,以初始化C類的對象中所包含的兩個(gè)B類的子對象二義性和支配原則虛基類如果在多條繼承路經(jīng)上有一個(gè)公共的基類,那么在繼承路經(jīng)的某處匯合點(diǎn),這個(gè)公共基類就會(huì)在派生類的對象中產(chǎn)生多個(gè)基類子對象要使這個(gè)公共基類在派生類中只產(chǎn)生一個(gè)子對象,必須將這個(gè)基類聲明為虛基類。虛基類聲明使用關(guān)鍵字virtual例如:classB{public:intb;};classB1:vir

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。