一、菱形繼承
在介紹虛繼承之前介紹一下菱形繼承
概念:A作為基類,B和C都繼承與A。最后一個類D又繼承于B和C,這樣形式的繼承稱為菱形繼承
菱形繼承的缺點:
數據冗余:在D中會保存兩份A的內容
訪問不明確(二義性):因為D不知道是以B為中介去訪問A還是以C為中介去訪問A,因此在訪問某些成員的時候會發生二義性
缺點的解決:
數據冗余:通過下面“虛繼承”技術來解決(見下)
訪問不明確(二義性):通過作用域訪問符::來明確調用。虛繼承也可以解決這個問題
演示案例
class A{public:A(int a) :m_a(a) {}int getMa() { return m_a; }private:int m_a;};class B :public A{public