C++:53---菱形继承、虚继承
生活随笔
收集整理的這篇文章主要介紹了
C++:53---菱形继承、虚继承
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、菱形繼承
在介紹虛繼承之前介紹一下菱形繼承
概念: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總結
以上是生活随笔為你收集整理的C++:53---菱形继承、虚继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言:---gdb多线程调试
- 下一篇: C++(13)--函数的进阶:内联、传递