C++虚继承举例分析
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"C++虚继承举例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++虚继承举例分析"吧!在多重继承中,如果发生了如:类B继承类
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
软件开发成果定义
数据库模型层次图
软件开发的怎样找工作
找不到猎豹服务器的dns.
著名的数据库
前范中国软件开发
网络安全法委员会主任是谁
网络安全问题约谈内容
楚雄彝族自治州新华互联网科技
方舟艾克服务器mod
无锡信息软件开发价格
铁路线路软件开发
服务器的管理组重启服务
网络安全架构设计教学大纲
网络技术学什么好
渭南市第六届国家网络安全宣传周
视频存放在数据库
怎么查热点dns服务器
工控制网络安全
河北net软件开发价钱是多少
电力生产安全和网络安全
网络安全事件调查处置情况记录单
网络技术学院怎么样
软件开发倒闭
网络安全颜料手抄报
网络安全保护专业怎么样
wow服务器ip
2021网络安全知识宣传片
涵悟睇互联网科技
2016年高中网络技术