c++ 派生类的构造函数次序
2024-08-26 16:10:03
#include <iostream>
using namespace std;
class CFatherSum //父类Sum
{
public:
CFatherSum(int iRec){cout<<"1,Constructing CFatherSum"<<iRec<<endl;}//构造函数成员初始化
};
class CFatherBru //父类Bru
{
public:
CFatherBru(int iRec){cout<<"2,Constructing CFatherBru"<<iRec<<endl;}//构造函数成员初始化
};
class CFatherObam //父类Obam
{
public:
//第一行用于对比默认构造
//CFatherObam(int iRec){cout<<"3,Constructing CFatherObam"<<iRec<<endl;}//构造函数成员初始化
CFatherObam(){cout<<"3,Constructing CFatherObam*"<<endl;}//构造函数成员初始化
};
class CSon:public CFatherSum,public CFatherBru,public CFatherObam //继承父Sum,Bru,Obam
{
public:
CSon(int iFirst,int iSec,int iThir,int iFor):CFatherSum(iFirst),m_bru(iFor),m_sum(iThir),CFatherBru(iSec)
{
//CFatherObam(iFor),m_obam(iFor) 非默认构造时,须派生构造传递构造参数
} private:
CFatherSum m_sum;
CFatherBru m_bru;
CFatherObam m_obam; }; //主函数
int main()
{
CSon son(,,,); getchar();
return ; }
结果:
结果分析:
构造参数次序先后如下:
1,派生类定义基类的顺序:从public CFatherSum到public CFatherBru到public CFatherObam
2,派生类内成员在类中声明的顺序:
CFatherSum m_sum;
CFatherBru m_bru;
CFatherObam m_obam;
延伸:析构函数次序相反,试验自行增加代码
最新文章
- HD2255奔小康赚大钱(最大权匹配模板)
- as自定义菜单。
- AngularJs学习笔记7——四大特性之模块化设计
- STM32驱动W25X64存储器
- jquery使用CSS3实现文字动画效果插件Textillate.js
- MVC 中获取Json数据
- 实验七 《FBG》—-小学生课后习题答案原型设计
- 数组排列组合问题——BACKTRACKING
- Java Arrays.sort源代码解析
- NoSuchMethodError: ... addOnCompleteCallback
- html5-css综合练习
- 阿里云help
- 批量修改mysql数据库引擎
- .NETCore分布式微服务站点设计(1)-概念图
- Jupyter notebook用法
- JavaScript插入节点小结
- java-spark的各种常用算子的写法
- DevOps实践
- js bom和dom
- spring集成redis,集成redis集群
热门文章
- [译]用R语言做挖掘数据《五》
- c#创建window服务
- mysql8.0遇到删除外键的错误
- JAVA基础之——JDK包分析concurrent
- 基于 java 【Web安全】文件上传漏洞及目录遍历攻击
- 关于VUE中 import 、 export 和 export default 的注意问题
- Redis实现分布式锁1
- java中的==、equals()、hashCode()源码分析(转载)
- 出售基于Html5的高性能GIS平台源码
- Android学习笔记(5)----启动 Theme.Dialog 主题的Activity时程序崩溃的解决办法