c++?虛繼承的實現(xiàn)示例
更新時間:2025年06月23日 09:14:31 作者:zh_xuan
本文主要介紹了c++?虛繼承的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
測試菱形繼承問題:
void testXuJicheng() { // 反面教材。一個基類被中間倆個派生類繼承,最終的子類同時繼承這倆個中間派生類,形成的類繼承關(guān)系圖像是菱形結(jié)構(gòu)。 // 菱形繼承導(dǎo)致二義性與數(shù)據(jù)冗余問題。 class Biology { public: string name; }; class Bird : public Biology {}; class Man: public Biology {}; // 假設(shè)有一種生物BirdMan同時繼承Bird和Man class BirdMan : public Bird, public Man {}; BirdMan b; b.name = "birdMain"; }
可以看到編譯錯誤:BirdMan::name不明確。
原因是,成員變量name從倆個父類中繼承到,這里不知道是指的哪個。
代碼修改為:
void testXuJicheng() { class Biology { public: string name; }; class Bird : virtual public Biology {}; // 虛繼承 class Man: virtual public Biology {}; // 虛繼承 // 假設(shè)有一種生物BirdMan同時繼承Bird和Man class BirdMan : public Bird, public Man {}; BirdMan b; b.name = "安德森"; cout << "a BirdMan, name: " << b.name << endl; }
打?。?/p>
到此這篇關(guān)于c++ 虛繼承的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)c++ 虛繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++中CString string char* char 之間的字符轉(zhuǎn)換(多種方法)
在寫程序的時候,我們經(jīng)常遇到各種各樣的類型轉(zhuǎn)換,比如 char* CString string 之間的互相轉(zhuǎn)換,這里簡單為大家介紹一下,需要的朋友可以參考下2017-09-09C++標(biāo)準(zhǔn)C函數(shù)在各平臺編譯結(jié)果都相同
今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)C函數(shù)在各平臺編譯結(jié)果都相同,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12基于C++執(zhí)行內(nèi)存memcpy效率測試的分析
本篇文章對C++中執(zhí)行內(nèi)存memcpy的效率進行了分析測試。需要的朋友參考下2013-05-05C++利用MySQL API連接和操作數(shù)據(jù)庫實例詳解
這篇文章主要介紹了C++利用MySQL API連接和操作數(shù)據(jù)庫實例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01