freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

【精品】面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言c84(編輯修改稿)

2025-06-05 06:55 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 class Derived:public Base{ public: Derived(){ cout“Derived created\n”。 } }。 void main() { Derived d。 } 6/6/2020 30 請(qǐng)分析 class base{ int x。 public: base(int i):x(i){ coutbase\n。 } }。 class derived:public base{ int a。 public: derived(int i):a(i*4),base(a){ coutderived\n。 } }。 ? 此時(shí)基類的數(shù)據(jù)成員 x的值為多少? 6/6/2020 31 多繼承派生類 ? 派生類有多個(gè)直接基類 , 這叫多繼承 。 Quadrangle Diamond Square Rectangle Quadrangle 6/6/2020 32 ? 定義多繼承派生類的語(yǔ)法格式: class 派生類名 : 繼承方式 1 基類名 1, 繼承方式 2 基類名 2, …… { ……//派生類新添加的成員 }。 6/6/2020 33 ? 多繼承派生類的構(gòu)造函數(shù): 派生類名 (參數(shù)表 ):基類名 1(參數(shù)表 1), 基類名 2(參數(shù)表 2), 對(duì)象成員 (參數(shù)表 3), … { //派生類構(gòu)造函數(shù) } ? 執(zhí)行順序:先執(zhí)行所有基類的構(gòu)造函數(shù)( 按這些基類被繼承時(shí)聲明順序依次執(zhí)行基類 基類 2的構(gòu)造函數(shù) ) , 再執(zhí)行對(duì)象成員所屬類的構(gòu)造函數(shù) , 最后執(zhí)行派生類本身的構(gòu)造函數(shù) 。 6/6/2020 34 多繼承中的二義性問題 ? 在多繼承中 , 一個(gè)類不可以重復(fù)成為另一個(gè)類的直接基類 , 但可以多次成為間接基類 。 此時(shí)派生類訪問基類成員時(shí)可能出現(xiàn)二義性 。 下面是出現(xiàn)二義性的兩種情況: – 訪問不同基類的具有相同名字成員時(shí)可能出現(xiàn)二義性 。 – 訪問共同基類的成員時(shí)可能出現(xiàn)二義性 。 6/6/2020 35 訪問不同基類同名成員時(shí)的二義性 class C: public A, public B{ public: void g()。 void h()。 }。 Void main() { C C1。 ()。 //出現(xiàn)二義性 =9。 //出現(xiàn)二義性 } class A { public: int value。 void f()。 }。 class B { public: int value。 void f()。 void g()。 }。 ? 訪問的 f()或 value是類 A中的還是類 B中的呢?解決辦法是用類名對(duì)成員加以限定,例如: ::f()。 或者 ::f()。 ::value 或者 ::value 6/6/2020 36 訪問共同基類成員時(shí)的二義性 class A{ public: int a。 void g( )。 }。 class B1: public A{ int b1。 }。 class B2: public A{ int b2。 }。 class C: public B1, public B2{ int c。 public: int f()。 }。 void main(){ C Cobj。 =8。 //有二義性 ::a=9。 //有二義性 ( )。 //有二義性 } 在“ ?!敝惺菍?duì) B1 繼承的基類 A 的成員 a,還是對(duì) B2繼承基類 A 的成員 a 進(jìn)行訪問呢?故有二義性。消除二義性的方法可改寫為: ::a?;? ::a。 6/6/2020 37 以上 4個(gè)類的關(guān)系如下圖所示: A(a) B1(b1) A(a) B2(b2) C(f(),c) 從圖中看出,類 A 是派生類 C 兩條繼承路徑上的一個(gè) 公共基類 ,因此這個(gè)公共基類會(huì)在派生類對(duì)象中產(chǎn)生 兩個(gè)基類子對(duì)象 。雖然可以通過(guò)類限定符的方式避免二義性,但問題的關(guān)鍵在于我們不需要在派生類對(duì)象中存在多個(gè)基類對(duì)象的拷貝!如果要使這個(gè)公共基類在派生類中只產(chǎn)生一個(gè)基類子對(duì)象,則需要將這個(gè)基類設(shè)置為 虛基類 。 6/6/2020 38 虛基類 ? 引進(jìn)虛基類的目的是為了解決二義性問題 , 使公共基類在其派生類對(duì)象中只產(chǎn)生一個(gè)基類子對(duì)象 。 ? 虛基類說(shuō)明格式如下: virtual 繼承方式 基類名 就是在 “ 繼承方式 ” 前面用關(guān)鍵字 virtual來(lái)說(shuō)明基類 。 6/6/2020 39 例子:虛基類的使用 class A{ public: int a。 void g( )。 }。 class B1: virtural public A{ int b1。 }。 class B2: virtural public A{ int b2。 }。 class C: public B1, public B2{ int c。 public: int f()。 }。 void main(){ C Cobj。 =8。 //或 ::a=9。 ( )。 } 6/6/2020 40 A(g(),a) B1(b1) B2(b2) C(f(),c) ? 和單繼承中的公有派生類一樣 , 可以進(jìn)行如下賦值操作: A amp。ref=Cobj。 A *p=amp。Cobj。 A Aobj=Cobj。 ? 例中 , 類 A, 類 B1, 類 B2 和類 C之間的關(guān)系如下圖所示 。 圖中可見 , 虛基類子對(duì)象被合并成一個(gè)子對(duì)象 , 這種 “ 合并 ” 作用 , 使得可能出現(xiàn)的二義性被消除 。 6/6/2020 41 請(qǐng)比較下面兩種
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1