C++基础——虚继承及其内存分布

本文介绍了C++中的虚继承,探讨了虚继承如何解决二义性问题以及其内存分布特点。通过实例分析,展示了普通继承和虚继承下类的内存占用情况,指出虚继承能节省空间并避免重复数据。
摘要由CSDN通过智能技术生成

 1、虚继承

在C++继承中会遇到一种特殊的情况——“钻石继承”。“钻石继承”指的是当一个基类A被两个派生类B和C同时继承,此时另一个派生类D又同时继承B和C,如果此时用图表示出来就像一个菱形一样,如下图。

    派生类D通过继承之后拥有基类A和派生类B,C的成员,所以一旦派生类D想要调用基类A的成员(无论是数据成员还是成员函数)时,此时派生类是通过派生类B来访问基类A的成员呢?还是通过派生类C来访问基类A的成员呢?所以这时候编译器就会抱怨,我到底是通过B类访问,还是通过C类访问呢?这就造成了二义性。那么解决这个问题最好的办法就是使用虚继承。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值