C++虚继承举例分析
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"C++虚继承举例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++虚继承举例分析"吧!在多重继承中,如果发生了如:类B继承类
千家信息网最后更新 2026年11月02日C++虚继承举例分析
这篇文章主要讲解了"C++虚继承举例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++虚继承举例分析"吧!
在多重继承中,如果发生了如:类B继承类A,类C继承类A,类D同时继承了类B和类C。最终在类D中就有了两份类A的成员,这在程序中是不能容忍的。当然解决这个问题的方法就是利用虚继承。
1 class A{ 2 public: 3 int t; 4 A(int a) 5 { 6 t = a; 7 } 8 void fun(); 9 };10 11 class B:virtual public A12 {13 public:14 B(int a, int b) :A(a+10)15 {16 t1 = b;17 }18 ~B();19 int t1;20 };21 22 class C :virtual public A23 {24 public:25 C(int a,int c):A(a+20)26 {27 t2 = c;28 }29 ~C();30 int t2;31 };32 33 class D :public B,public C34 {35 public:36 D(int a,int b,int c,int d) :B(a,b),C(a,c),A(a){}//在此必须要给虚基类传参37 ~D();38 };在派生时将关键字virtual加在相应相应继承方式前,就可防止在D类中同时出现两份A类成员。
在实例化D时我们给a传入一个1,那么在虚基类中的t为何值呢?(注意我们在第14,25行给虚基类的构造函数传值时都进行了"+"操作。)
而答案是肯定的必然为1,因为在实例化D的时候,只会调用一次虚基类的构造函数,使得虚基类接收到参数也只可能是从实例化D时传过来的参数。
int mian(){ D temp(1,2,3,4);return 0;}注意:C++编译系统在实例化D类时,只会将虚基类的构造函数调用一次,忽略虚基类的其他派生类(class B,class C)对虚继承的构造函数的调用,从而保证了虚基类的数据成员不会被多次初始化。
感谢各位的阅读,以上就是"C++虚继承举例分析"的内容了,经过本文的学习后,相信大家对C++虚继承举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
C++
分析
函数
实例
成员
学习
内容
参数
同时
就是
问题
关键
关键字
必然
思路
情况
数据
文章
方式
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网黑科技
互联网新科技
深圳九邦互联网科技有限公司
科技互联网龙头
盈实互联网科技
美国互联网科技
互联网科技小贷
互联网科技缩写
互联网科技汛
一五八零互联网科技
重庆科技学院互联网
宁波青枫互联网科技有限公司
昭通互联网科技选哪家
滨湖区互联网智能科技产品有哪些
山东子淼互联网科技有限公司
张召忠谈中国互联网科技
长沙渺峰互联网科技有限公司
广州三三互联网科技有限公司
马化腾互联网科技教学
科技美学互联网 艺术
广东万易互联网科技有限公司惠州分公司
互联网科技深圳
涨乐互联网科技
金融科技 互联网金融
嘟嘟瓜互联网科技
科技互联网公司logo
长亮科技 互联网金融
速维有品互联网信息科技(苏州)有限公司
中和天地互联网科技有限公司
颐高云石互联网科技