如何理解C++中的继承与虚继承
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,如何理解C++中的继承与虚继承,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。普通的公有继承class test1{public:
千家信息网最后更新 2026年11月03日如何理解C++中的继承与虚继承
如何理解C++中的继承与虚继承,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
普通的公有继承
class test1{public: test1(int i) :num1(i) {}private: int num1;};class test2 : public test1{public: test2(int i,int j) : test1(i), num2(j) { }private: int num2;};void main(){ test2 t2(1,2);}(test2内存结构)查看内存发现父类在子类的上面

多重继承
在原有的代码基础上增加了test3类
test3类继承了 test2和test1
class test1{public: test1(int i) :num1(i) {}private: int num1;};class test2{public: test2(int i) : num2(i) { }private: int num2;};class test3 :public test2 ,public test1{public: test3(int i, int j,int k) :test1(i), test2(j),num3(k) {}private: int num3;};void main(){ test3 t3(1, 2, 3);}(test3内存地址 ) 依旧是父类在子类上
但是现在有两个父类为什么test2在test1上?
这和我们的继承顺序有关 我们先继承了test2又继承了test1 更换内存继承顺序 内存的情况也会有所变化

虚继承
class test1{public: test1(int i) :num1(i) {}private: int num1;};class test2: virtual public test1{public: test2(int i,int j) :test1(i), num2(j) { }private: int num2;};void main(){ test2 t2(1, 2);}(t2的内存) 我们发现虚继承以后父类成员数据在子类成员数据下面了 首地址处莫名其妙多了四字节
这四字节就是我们的虚基类表的地址
跟随虚继承表 其中存储了本类距离父类对象的差值 通过差值能够找到父类对象
我们再看这个内存0x0082fbd8是t2的首地址 0x0082fbe0是父类的位置
0x0082fbd8 - 0x0082fbe0 == 8
就是本类距离父类对象的差值
虚继承(菱形继承)
class test1{public: test1(int i) :num1(i) {}private: int num1;};class test2: virtual public test1{public: test2(int i,int j) :test1(i), num2(j) { }private: int num2;};class test3 :virtual public test1{public: test3(int i, int j) :test1(i), num3(j){}private: int num3;};class test4 :public test2, public test3{public: test4(int i, int j, int k) :test1(i),test2(i,j), test3(i,j),num4(k) { }private: int num4;};void main(){ test4 t4(1, 2,3);}
test4的内存 我们看到 t2和t3都有自己的虚基类表地址 记录了自己和父类的偏移
两个虚基类表的内容
现在我们计算一下 到爷爷类的差值是否正确
0x00FAFD50 - 0x00fafd3c == 14
0x00FAFD50 - 0x00fafd44 == C
关于如何理解C++中的继承与虚继承问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
内存
地址
差值
子类
对象
问题
C++
两个
内容
字节
就是
成员
数据
更多
顺序
帮助
解答
易行
普通
莫名其妙
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡
金诺互联网科技
互联网 科技创新
互联网与未来科技
极限挑战互联网科技
润盈互联网科技
兼蜜互联网科技
猫创互联网科技
镁科技互联网资讯平台
新华互联网科技2019
中国科技互联网公司收入
互联网科技热点资讯
银川新华互联网科技职业技术培训学校图片
互联网经济与金融科技
米聚互联网科技南京有限公司排面
深圳艾果互联网通讯科技
爱医互联网络科技
雨阳互联网卡科技有限公司
互联网科技手抄报图片
马化腾互联网科技教学
喔噻互联网科技
新浪科技互联网
奔汉互联网科技
互联网科技博客
互联网科技创新企业排名
互联网实体化科技化
珠海东科互联网科技有限公司
互联网科技接地气
互联网科技创新创业项目
北京品多多互联网科技有限公司