1.首先什么是菱形繼承呢? 首先菱形繼承是由多重繼承衍生出來的,一個子類具有兩個或以上直接 父類的繼承關系 

在DD的對象模型中存在兩份AA成員,所以菱形繼承會存在二義性與數據冗余的問題,而為了解決這個問題,推出了虛擬繼承的方法
#include<iostream>using namespace std;class AA{public: int _aa;};class BB:virtual public AA{public: int _bb;};class CC:virtual public AA{public: int _cc;};class DD:public BB,public CC{public: int _dd;};int main(){ DD d; d.BB::_aa = 0; d.CC::_aa = 1; d._bb = 2; d._cc = 3; d._dd = 4; return 0;}
在虛擬繼承中完美詮釋了以時間換空間 的做法,開辟出8個字節存放指針,在其地址上保存自己需要偏移量,從而調用成員,達到解決菱形繼承二義性和數據冗余的目的。
新聞熱點
疑難解答