C++:53---菱形继承、虚继承

小灰灰 2022-12-30 03:53 251阅读 0赞

一、菱形继承

  • 在介绍虚继承之前介绍一下菱形继承
  • 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承
  • 菱形继承的缺点:
    • 数据冗余:在D中会保存两份A的内容
    • 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性
  • 缺点的解决:
    • 数据冗余:通过下面“虚继承”技术来解决(见下)
    • 访问不明确(二义性):通过作用域访问符::来明确调用。虚继承也可以解决这个问题

format_png

演示案例

  1. class A{public:A(int a) :m_a(a) {}int getMa() { return m_a; }private:int m_a;};
  2. class B :public A{public

发表评论

表情:
评论列表 (有 0 条评论,251人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++:53---菱形继承继承

    一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺