C++学习基础十——子类构造函数与析构函数的执行
1.子类构造函数的执行:
先执行父类的构造函数,再执行成员对象的构造函数,最后执行自身的构造函数。
当继承多个类时,构造函数的 执行顺序与继承时的顺序 相同,而与子类构造函数调用父类构造函数的顺序无关。
2.子类析构函数的执行:
先执行自身析构函数,再执行成员对象的析构函数,最后执行父类的析构函数 。
当继承多个类时,父类析构函数的执行过程与构造函数的执行过程相反
3.代码如下:
#include <iostream>
#include <string> using namespace std;
//子类构造函数的执行过程:先执行父类的构造函数,再执行成员对象的构造函数,最后执行自身的构造函数
//当继承多个类时,构造函数的 执行顺序与继承时的顺序 相同,而与子类构造函数调用父类构造函数的顺序无关
//子类析构函数的执行过程:先执行自身析构函数,再执行成员对象的析构函数,最后执行父类的析构函数
//当继承多个类时,父类析构函数的执行过程与构造函数的执行过程相反 class Base1
{
public:
Base1(int k)
{
a = k;
cout<<"Base1的构造函数被调用...."<<endl;
}
void test()
{
cout<<a<<endl;
}
~Base1()
{
cout<<"Base1的析构函数被调用...."<<endl;
}
private:
int a;
}; class Base2
{
public :
Base2(int k)
{
b = k;
cout<<"Base2的构造函数被调用...."<<endl;
}
void test()
{
cout<<b<<endl;
}
~Base2()
{
cout<<"Base2的析构函数被调用...."<<endl;
}
private:
int b;
}; class Base3
{
public:
Base3()
{
c = ;
cout<<"Base3的默认构造函数被调用...."<<endl;
}
void test()
{
cout<<c<<endl;
}
~Base3()
{
cout<<"Base3的析构函数被调用...."<<endl;
}
private:
int c;
}; class Demos
{
public:
Demos(int k)
{
m = k;
cout<<"Demos的构造函数被调用...."<<endl;
}
int getM()
{
return m;
}
~Demos()
{
cout<<"Demos的析构函数被调用...."<<endl;
}
private:
int m;
}; class son:public Base1,public Base3,public Base2
{
public:
son(int a,int b,int c,int l);
void test();
~son();
private:
int s;
Demos d;
}; son::son(int a,int b,int c,int l):Base1(a),Base2(b),s(c),d(l)
{
cout<<"son的构造函数被调用...."<<endl;
} void son::test()
{
Base1::test();
Base2::test();
Base3::test();
cout<<s<<endl;
cout<<d.getM()<<endl;
}
son::~son()
{
cout<<"son的析构函数被调用...."<<endl;
} int main()
{
cout<<"======子类构造函数的执行过程 start====="<<endl;
son son(,,,);
cout<<"======子类构造函数的执行过程 end====="<<endl;
son.test(); cout<<"\n======子类析构函数的执行过程 ====="<<endl;
return ;
}
执行结果如下图所示:

C++学习基础十——子类构造函数与析构函数的执行的更多相关文章
- C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序
基类和派生类:构造函数和析构函数的执行顺序 在Visual Studio中,新建控制台工程,构造类如下: #include<iostream> using namespace std; c ...
- C++学习基础十二——纯虚函数与抽象类
一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个 ...
- C++学习基础六——复制构造函数和赋值操作符
1.什么是复制构造函数 复制构造函数:是构造函数,其只有一个参数,参数类型是所属类的类型,且参数是一个const引用. 作用:将本类的成员变量赋值为引用形参的成员变量. 2.什么是赋值操作符 赋值操作 ...
- c++中的类(构造函数,析构函数的执行顺序)
类对象的初始化顺序 新对象的生成经历初始化阶段(初始化列表显式或者隐式的完成<这部分有点像java里面的初始化块>)——> 构造函数体赋值两个阶段 1,类对象初始化的顺序(对于没有父 ...
- C++学习基础十一——子类对象向父类对象的转化
一.C++中可以实现子类向父类的转换,主要分为三种形式: 1.对象转换:不能实现动态绑定,即不能实现多态. 2.引用转换:动态绑定,实现多态. 3.指针转换:动态绑定,实现多态. 注意:一般不会出现父 ...
- C++学习基础十六-- 函数学习笔记
C++ Primer 第七章-函数学习笔记 一步一个脚印.循序渐进的学习. 一.参数传递 每次调用函数时,都会重新创建函数所有的形参,此时所传递的实参将会初始化对应的形参. 「如果形参是非引用类型,则 ...
- C++学习基础十五--sizeof的常见使用
sizeof的常见用法 1. 基本类型所占的内存大小 类型 32位系统(字节) 64位系统(字节) char 1 1 int 4 4 short 2 2 long 4 8 float 4 4 doub ...
- C++学习基础十四——基础类型vector
一.vector的使用 1. #include <vector> 2. 初始化的四种方法 vector<T> v1; vector<T> v2(v1); vecto ...
- 第十六周oj刷题——Problem E: B 构造函数和析构函数
Description 在建立类对象时系统自己主动该类的构造函数完毕对象的初始化工作, 当类对象生命周期结束时,系统在释放对象空间之前自己主动调用析构函数. 此题要求: 依据主程序(main函数)和程 ...
随机推荐
- 【Android】配置APK开发环境
1.安装java jdk去oracle公司下载jdk-7u15-windows-i586.exehttp://www.oracle.com/technetwork/cn/java/javase/dow ...
- BZOJ 3670 && BZOJ 3620 && BZOJ 3942 KMP
最近感到KMP不会啊,以前都是背板的现在要理解了. #include <iostream> #include <cstring> #include <cstdio> ...
- KVC/KVO原理详解及编程指南
一.简介 1.KVC简介 2.KVO简介 二.KVC相关技术 1.Key和Key Path 2.点语法和KVC 3.一对多关系(To-Many)中的集合访问器方法 4.键值验证(Key-Value V ...
- USB协议-USB设备的枚举过程
USB主机在检测到USB设备插入后,就要对设备进行枚举了.为什么要枚举?枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等. ...
- x-code快捷键
关于xcode 可设偏好设置 command+,清空缓存 可设隐藏xcode command+h隐藏其它 command+option+h显示全部 可设退出xcode command+q 文件相关: ...
- 如何在JBoss WildFly 8 自定义log4j日志
最近在 JBoss WildFly 8 下部署 Web应用,自定义的 log4j 日志不工作.console下无日志输出,用System.out.println都不输出内容到console. 原因是J ...
- android之ViewPager
在android中ViewPager是非常常用的控件.它在android.support.v4.view.ViewPager下.你们自己可以进http://developer.android.com/ ...
- pt-ioprofile分析查看mysql的真实IO情况
针对IO密集型应用做系统调优的时候,我们通常都需要知道系统cpu 内存 io 网络等系统性能 和 使用率,结合应用本身的访问量,以及 mysql的性能指标来综合分析.比如说:我们将系统压力情况分为 ...
- 反编译dtsi
dtsi机制是linux kernel为了适配多设备做出来的模块,产品线拉的较长的话用它来控制最合适不过了.初步阅读了下代码和接口清晰简洁. 这个东东出来的时候xml/json应该比较成熟了,疑惑的是 ...
- EDIUS中调整YUV曲线的教程
本篇文章重点地讲解了EDIUS调整YUV曲线的方法,是一篇很详细的EDIUS教程文章,它能帮助新手小伙伴快速掌握EDIUS视频编辑软件的某一知识点.相信坚持学习小编推荐的教程文章,你们会很快入门EDI ...