c++——继承类中的子对象和基类对象的初始化
来源:互联网 发布:记忆力软件训练 编辑:程序博客网 时间:2024/05/21 13:08
先给结论:
(1)派生类中的基类子对象和子对象必须初始化,初始化在派生类的构造函数的初始化列表中,如果初始化列表中没有进行初始化,则调用缺省的构造函数进行初始化。
(2)派生类构造函数的调用顺序:
例子
class point1 {public: point1(); point1(int i); virtual ~point1();private: int x; };point1::point1(){ x=1; cout<<"point1's default constructor called!\n";}point1::point1(int i){ x=i; cout<<"point1's constructor called!\n";}point1::~point1(){} class point2 : public point1 {public: point2(); point2(int i,int j,int k); virtual ~point2(); point1 p;};point2::point2() { cout<<"point2's defaule constructor called\n";}point2::point2(int i,int j,int k){ cout<<"point2's constructor called\n";}point2::~point2(){} //主函数void main(){ point2 pp; point2 pp1(1,2,3);}
运行结果
point1's default constructor called!// point1 p;调用了基类默认构造函数point1's default constructor called!//point2's defaule constructor calledpoint1's default constructor called!// point1 p;调用了基类默认构造函数point1's default constructor called!point2's constructor called
如果函数
point2::point2(int i,int j,int k){ cout<<"point2's constructor called\n";}
改为:
point2::point2(int i,int j,int k):p(j){ cout<<"point2's constructor called\n";}
运行结果为:
point1's default constructor called!point1's default constructor called!point2's defaule constructor calledpoint1's default constructor called!point1's constructor called!point2's constructor called
0 0
- c++——继承类中的子对象和基类对象的初始化
- 继承类中的子对象和基类对象的初始化
- 继承类中的子对象和基类对象的初始…
- 继承中的对象初始化顺序(内存结构)和继承类初始化
- 继承和类的组合/内嵌对象初始化
- c++中成员对象初始化和类继承初始化
- 类的初始化和对象的初始化
- 类和对象的初始化
- 类和对象的初始化
- 类和对象的初始化
- 类和对象的初始化
- 子对象的初始化
- 类中的类成员对象的初始化和析构
- C++中的面向对象 01.类的初始化和释放
- js中的类,对象和继承
- 类和对象 初始化
- 对象和类继承
- 类和对象 -----继承
- qt与excel 一去二三里整理
- TCP封包粘包半包
- cocos2d-x中讲解TileMap地图编辑器的高级用法(三)
- Bootstrap3实现的响应式幻灯滑动效果个人作品集/博客网站模板
- OpenSSH交叉编译和移植
- c++——继承类中的子对象和基类对象的初始化
- Android Fragment学习笔记(一)----Fragment的生命周期和派生类
- 马化腾罕见撰文:互联网最大红利
- Junit测试,断言
- HDU 1730 Northcott Game(nim博弈)
- [译]在Tiled Map中使用碰撞检测(一) 创建基于Tiled Map的游戏
- 网络的connect如何超时设置?MFC socket异步 timeout select
- 【SPOJ】6779 Can you answer these queries VII 树链剖分+线段树 求树上的最大子段和
- throw 与 throws的区别与联系是什么?