查看: 290|回复: 0

C++ 虚继承

[复制链接]
 楼主| 发表于 5 天前 | 显示全部楼层 |阅读模式
前言

虚继承 是面向对象编程中的一种技术,是指一个指定的基类,在继承体系布局中,将其成员数据实例共享给也从这个基类型直接或间接派生的别的类。
捏造继承是多重继承中特有的概念。捏造基类是为办理多重继承而出现的。

捏造继承在一样平常的应用中很少用到,所以也往往被忽视,这也主要是由于在C++中,多重继承是不推荐的,也并不常用,而一旦离开了多重继承,捏造继承就完全失去了存在的必要,由于如许只会低落效率和占用更多的空间
例如菱形继承:


类 A 派生出类 B 和类 C,类 D 继承自类 B 和类 C,这个时间类 A 中的成员变量和成员函数继承到类 D 中变成了两份,一份来自 A-->B-->D 这条路径,另一份来自 A-->C-->D 这条路径。
留意:

多继承时很容易产生命名冲突,纵然我们很小心地将全部类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有大概发生
virtual修饰继承方式:
  1. 1 //继承的动作 虚继承2 //父类:虚基类3 class 子类:virtual public 父类4 {5 6 };
复制代码
vbptr(虚基类指针) 其中v是virtual 虚 b是base 基类 prt指针(vbptr指向虚基类表)vbtable(虚基类表 ) 保存了当前的虚指针相对于虚基类的首地址的偏移量 总结:之所以 产生 vbptr和vbtable 目的 保证 不管多少个继承 虚基类的数据只有一份。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

天涯海角也要找到Ni:C++ 虚继承

中发现Ni: C++ 虚继承
中发现Ni: C++ 虚继承
中发现Ni: C++ 虚继承
中发现Ni: C++ 虚继承
中发现Ni: C++ 虚继承
中发现Ni: C++ 虚继承
相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表