C++编译器:虚基类及其派生类的构造函数
来源:互联网 发布:被冒名网络贷款怎么办 编辑:程序博客网 时间:2024/04/27 08:45
C++编译器:虚基类及其派生类的构造函数
如果虚基类中声明了非默认形式的构造函数,并且没有声明默认形式的构造函数,那么在整个继承关系中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化类表中列出对虚基类的初始化。
输出:A1::display()...1
看起来在建立C1的对象时有三次初始化A1的ia1数据成员,但编译器采取了也个策略是上述问题不会发生:
上例建立对象c1时,D1就是最远派生类。
建立一个对象时,如果这个对象中含有从虚基类继承来的成员,则虚基类的成员由最远派生类的构造函数通过条用虚基类的构造函数进行初始化,该类的其他派生类对虚基类构造函数的调用自动被忽略。(上列中B1,B2)
可将上述4个注释行前后内容对换测试。
输出 A1::display()...0
可是编译器为什么要使用这种策略?在上述例子中假如编译器不使用这种策略
21行语句 :C1(int i):B1(i),B2(i),A1(i){} 能否能其他方式实现虚基类的初始化?假如能实现会带来什么问题?
- C++编译器:虚基类及其派生类的构造函数
- 虚基类及其派生类的构造函数
- 虚基类及其派生类的构造函数
- 继承与派生:虚基类及其派生类的构造函数
- 四十二、继承与派生:虚基类及其派生类的构造函数
- 什么时候编译器会合成派生类的构造函数
- 派生类的构造函数及其对象的初始化
- 【C++】派生类构造函数
- 虚基类及派生类的构造函数
- [c++]派生类的构造函数和析构函数
- c++---派生类的构造函数和析构函数
- C++派生类的构造函数和析构函数执行顺序及其构造形式
- 派生类的构造函数
- 派生类的构造函数
- 派生类的构造函数
- 派生类的构造函数
- 派生类的构造函数
- 派生类的构造函数
- asp.net 后台绑定相关操作
- 常用正交表
- JQ视频
- 61条面向对象分析设计的经验原则
- SqlDataAdapter与DataSet
- C++编译器:虚基类及其派生类的构造函数
- 如何识别高级的验证码
- Please look at thgis blog
- linux下的多播
- 如何实现动态调用webservice
- 百度笔试题 [软件工程师]
- 下东西为什么还要分呢
- 一个计算机专业在读研究生的迷茫(转)
- glPushMatrix()和glPopMatrix()以及glLoadIdentity()的理解