阅读项目,写出执行结果4
2016-05-16 15:26
393 查看
#include <iostream> using namespace std; class Base { public: Base(char i) { cout<<"Base constructor. --"<<i<<endl; } }; class Derived1:virtual public Base { public: Derived1(char i,char j):Base(i){ cout<<"Derived1 constructor. --"<<j<<endl; } }; class Derived2:virtual public Base { public: Derived2(char i,char j):Base(i){ cout<<"Derived2 constructor. --"<<j<<endl; } }; class MyDerived: public Derived1,public Derived2 { public: MyDerived(char i,char j,char k,char l,char m,char n,char x): Derived2(i,j), Derived1(k,l), Base(m), d(n){ cout<<"MyDerived constructor. --"<<x<<endl; } private: Base d; }; int main() { MyDerived obj('A','B','C','D','E','F','G'); return 0; }
运行结果:
过程分析:
base 是一个虚基类,只有最远派生类的构造函数才会调用虚基类的构造函数,该派生类的其他基类对虚基类的构造函数的调用都会忽略,所以初始化只进行一次
按照继承顺序 对derived1 derived2进行初始化
对myderived中的base型的数据进行初始化
最后执行构造函数中的输出语句
相关文章推荐
- OC语言笔记(六):OC单例、NSData和文件操作
- 生成网站快捷方式
- ACE框架整合记录5tooltip插件-【完结】
- MySQL——死锁
- 网络层概念学习之一(基本概念、路由器、选路算法)
- 动态规划交错匹配问题
- 理解JS中的prototype
- Haproxy+MYSQL 负载均衡 原创
- [转] 在React Native中使用ART
- 模仿系统自带的集拍照,录制视频,以及iphone6S以下的手机拍摄livephoto照片(livephoto),滑动可切换
- Goodix系列------input device的init
- Unity Asset Store资源下载路径 资源保存路径
- ios图片的压缩处理
- 神奇的排序
- 解决Android studio 下的APK打包失败问题
- oracle数据库兼容mysql的差异写法
- 【转载】Java中使用Jedis操作Redis
- LoadRunner监控远程机器Windows资源,提示“net use failed” 解决办法
- 慎用jQuery中的submit()方法
- ASP.NET组件System.Web.Optimization原理及缓存问题详解