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

正文內(nèi)容

繼承與組合ppt課件-資料下載頁(yè)

2025-05-03 01:52本頁(yè)面
  

【正文】 ) …… { 派生類構(gòu)造函數(shù)體 }。 69 先執(zhí)行所有基類的構(gòu)造函數(shù) 再執(zhí)行子對(duì)象類的構(gòu)造函數(shù) ( 若有 ) 再執(zhí)行派生類本身的構(gòu)造函數(shù) 注意: 同一層次 的各基類構(gòu)造函數(shù)的 執(zhí)行順序 取決于定義派生類時(shí) 所 指定 的各 基類順序 , 與派生類構(gòu)造函數(shù)中所定義的成員初始化表的各項(xiàng)順序無(wú)關(guān) 。 派生類構(gòu)造函數(shù)的 調(diào)用順序 是: include iostream class B1 { public: B1(int i) { b1=i。 cout“ constructor B1.” Iendl。 } void print() { coutb1endl。 } private: int b1。 }。 class B2 { public: B2(int i) { b2=i。 cout“ constructor B2.” Iendl。 } void print(){ coutb2endl。 } private: int b2。 }。 class B3 { public: B3(int i) { b3=i。 cout“ constructor B3.” Iendl。 } int getb3{ return b3。 } private: int b3。 }。 class A: public B2,public B1 { public: A(int i,int j,int k,int l) : B1(i),B2(j),bb(k) { a=l。 cout“ constructor A.” I endl。 } void print() { B1::print()。 B2::print()。 couta“ ,” ()endl。 } private: int a。 B3 bb。 }。 void main () { A aa(1,2,3,4)。 ()。 } 72 運(yùn)行結(jié)果: constructor constructor constructor constructor 1 2 4 , 3 73 三、多重繼承中存在的問(wèn)題: 名字沖突 ? 在多重繼承下,若多個(gè)基類具有相同的成員名,可能造成對(duì)基類中該成員的訪問(wèn)出現(xiàn)不是唯一的情況,則稱為 對(duì)基類成員訪問(wèn)的 二義性 。 int main() { DeviceNew device(,3,false,10,250,80)。 cout“ The weight of the device:” ()。 ()。 ()。 return 0。 ] 74 使用相應(yīng)的類名來(lái)標(biāo)識(shí) ::showPower()。 在派生類中重定義有名稱沖突的成員 void showPower() { Device1::showPower()。 Device2::showPower()。 } 消除二義性有兩種方法: 75 ? 當(dāng)一個(gè)派生類從多個(gè)基類派生,而這些基類又有一個(gè)共同的基類,會(huì)出現(xiàn) 重復(fù)繼承 的情形。 四、重復(fù)繼承 Base Base1 Base2 Derived 76 class A { public : int a。 }。 class B1:public A { private:int b1。 }。 class B2:public A { private:int b2。}。 class C:public B1,public B2 { public :int f()。 private: int c。 }。 。 ::a。 //存在二義性 a b1 a b2 c 也會(huì)出現(xiàn)二義性問(wèn)題: 77 ? 程序清單 88 78 采用作用域操作符(::)明確選擇是哪個(gè)副本 中的數(shù)據(jù) ::a。 ::a。 使用虛基類 class B1:virtual public A { private:int b1。 }。 class B2:virtual public A { private:int b2。 }。 這樣派生類的存儲(chǔ)空間中只保留被重復(fù)繼承的祖先類的一 個(gè)對(duì)象副本。(程序清單 89) 消除二義性有兩種方法: 79 虛基類的說(shuō)明 在上例中,由類 A,類 B1和類 B2以及類 C組成了類繼承的層次結(jié)構(gòu)。 在該結(jié)構(gòu)中,類 C的對(duì)象將包含兩個(gè)公共基類 A的子對(duì)象。若只想使公共基類在派生類中只產(chǎn)生一個(gè)基類子對(duì)象,則必須將該基類設(shè)定為虛基類。 其真正目的是為了 解決二義性問(wèn)題 。 說(shuō)明格式為: class 派生類名: virtual 繼承方式 基類名 { … }; a b1 b2 c 如: class A { public : int a。 }。 class B1:virtual public A { private:int b1。}。 class B2:virtual public A { private:int b2。}。 class C:public B1,public B2 { public :int f()。 private: int c。 }。 則: 。 ::a。 ::a。::a。 81 A A B1 B2 C 非虛基類的類層次 A B1 B2 C 虛基類的類層次
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1