当前位置: 首页 > news >正文

【专题总结】【一文解决】C++多继承下的构造函数执行顺序

多继承下的构造函数执行顺序
派生类构造函数执行顺序如下
①调用基类构造函数→调用顺序按它们被继承时【从左至右】被说明的次序
②调用子对象的构造函数→调用顺序按它们在【类中说明次序】
③调用派生类的构造函数
【典型题1】13浙工大卷二读程序4题
【分析】下面①classC:public A,public B时A左B右→故先调A构造再调B构造
②B b,A a是子对象(类中定义的对象),类中先说明b再说明a→故先调B构造再调A构造
③最后调派生类C构造
在这里插入图片描述
【题2】C++教辅p191例题
【注意】classC:public B,public A时B左A右→故先调B构造再调A构造 [本题没有子对象]
在这里插入图片描述
题1代码如下

#include "bits/stdc++.h" 
#include<iostream>
using namespace std;class A{int a;public:A(){cout<<"调用A的构造"<<endl;}
}; class B{int b;public:B(){cout<<"调用B的构造"<<endl;} 
};class C:public A,public B{ //从类A和B共有派生C【注意】A左B右,先调A构造调B构造 //上面输出1"调用A构造",2"调用B构造" B b; //子对象b.输出3调用B的构造 A a; //子对象a.输出4调用A的构造 int c;public:C(){ cout<<"调用派生类C的构造"<<endl; //最后调用5派生类C构造 } 
};int main(){ C c; return 0;
} 

题2代码如下

#include "bits/stdc++.h" 
#include<iostream>
using namespace std;class A{ //基类A int a;public:A(int i){a=i;cout<<"A构造"<<endl;}void disp(){cout<<"A的a="<<a<<endl;}
}; class B{ //基类B  int b;public:B(int j){b=j;cout<<"B构造"<<endl; }void disp(){cout<<"B的b="<<b<<endl;}
};class C:public B,public A{ //从类A和B共有派生C【注意】B在左A在右,先调B构造再调A构造    int c;public:C(int k):A(k-2),B(k+2){ //包含基类成员初始化参数列表  c=k;cout<<"C构造"<<endl;}void disp(){ //C的disp()  A::disp(); //4输出A的a=8 B::disp(); //5输出B的b=12 cout<<"C的c="<<c<<endl; //6输出C的c=10 }
};int main(){ C obj(10); //输出1B构造,2A构造,3C构造 obj.disp(); //执行C的disp() return 0;
} 

相关文章:

  • 计算机毕业设计 服装生产信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Python的异步编程
  • 【漏洞复现】金和OA C6 GeneralXmlhttpPage.aspx Sql注入漏洞
  • ARM Process state -- PSTATE
  • ubuntu卸载VSFTPD
  • IDEA使用技巧
  • 学习经验分享【38】YOLOv11解读——最新YOLO版本
  • 第十讲-显示控件QLabel
  • 【艾思科蓝】Vue.js组件开发实战:从零构建高效可复用组件
  • PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(三)
  • Qt开发第一讲
  • Unity 2D RPG Kit 学习笔记
  • 2024年合肥市职业院校技能大赛(中职组)赛 网络安任务书样题
  • 【生成模型】学习笔记
  • Java之线程篇七
  • 【刷算法】求1+2+3+...+n
  • Android框架之Volley
  • ES6 ...操作符
  • Java方法详解
  • Vue2 SSR 的优化之旅
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue的全局变量和全局拦截请求器
  • 半理解系列--Promise的进化史
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从0到1:PostCSS 插件开发最佳实践
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 给初学者:JavaScript 中数组操作注意点
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 前嗅ForeSpider采集配置界面介绍
  • 我看到的前端
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • linux 淘宝开源监控工具tsar
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #1014 : Trie树
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)pulsar安装在独立的docker中,python测试
  • (十)T检验-第一部分
  • (一) 初入MySQL 【认识和部署】
  • (转)原始图像数据和PDF中的图像数据
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .Net Core中Quartz的使用方法
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .Net插件开发开源框架
  • .NET多线程执行函数
  • @Documented注解的作用
  • @FeignClient注解,fallback和fallbackFactory
  • @JsonSerialize注解的使用
  • @RequestMapping-占位符映射
  • @ResponseBody