C++的继承中构造和析构函数的调用顺序

C++ 类继承:构造函数与析构函数调用顺序,派生类和基类之间的特殊关系,公有继承及其他 文章目录一、派生类构造函数与基类构造函数二、创建与销毁派生类对象时,构造函数和析构函数的调用三、派生类和基类之间的特殊关系四、公有继承(一)、何为公有继承(二)、多态公有继承(三)、虚函数的工作原理(四)、虚函数注意事项五、访问控制:protected六、抽象基类 一、派生类构造函数与基类构造函数 派生类的构造函数做了如下事情: 创建基类对象 派生类构造函数通过成员初始化列表将基类信息传递给基类... 阅读详情

实例:

#include <iostream>
using namespace std;
class parent{
public:
	parent(int a, int b, int d)
	{
		this->a = a;
		this->b = b;
		this->d = d;
		cout << "基类构造" << endl;
	}
	~parent()
	{
		cout << "基类析构" << endl;
	}
public:
	int a;
private:
	int b;
protected:
	int d;
};
class child3 : public parent
{
public:
	child3(int c, int a, int b, int d) : parent(a, b, d)
	{
		this->c = c;
		cout << "派生类构造函数" << endl;
	}
	~child3()
	{
		cout << "派生类析构函数" << endl;
	}
public:
private:
	int c;
protected:
};
int main()
{
	{
		child3 oop(1, 2, 3, 3);
	}
	system("pause");
	return 0;
}

在上述代码中,程序在执行时会先进入到基类的构造函数执行parent(int a,int b,int c)构造函数,当构造函数执行结束后打印基类构造函数,然后继续执行child3的构造函数child3(int c,int a,int b,int  d),当该构造函数执行结束后打印派生类构造函数,然后进入到派生类析构函数执行,执行完成最后执行基类析构函数,最后打印基类析构函数;



混搭情况下构造和析构函数的调用规则:

构造:先调用父类构造函数,在调用构造成员,最后调用自己的构造函数;

析构:先析构自己,在析构成员变量,最后析构父类


#include <iostream>
using namespace std;
class Grad{
public:
	Grad(int _a, int _b)
	{
		this->_a = _a;
		this->_b = _b;
		cout << "Grad 构造函数" << endl;
	}
	~Grad()
	{
		cout << "Grad析构函数" << endl;
	}
private:
	int _a;
	int _b;
};
class parent 
{
public:
	parent(int a, int b, int d) 
	{
		this->a = a;
		this->b = b;
		this->d = d;
		cout << "基类构造" << endl;
	}
	~parent()
	{
		cout << "基类析构" << endl;
	}
public:
	int a;
private:
	int b;
protected:
	int d;
};
class child3 : public parent
{
public:
	child3(int c, int a, int b, int d) : parent(a, b, d), oop1(5, 6), oop2(7,8)
	{
		this->c = c;
		cout << "派生类构造函数" << endl;
	}
	~child3()
	{
		cout << "派生类析构函数" << endl;
	}
public:
	Grad oop1;
	Grad oop2;
private:
	int c;
protected:
};
int main()
{
	{
		child3 oop(1, 2, 3, 3);
	}
	system("pause");
	return 0;
}


【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序 一、派生类对象中基类构造函数和派生类中构造函数调用顺序(WIN7 64位 VS2012) (1)、先执行派生类的构造函数还是先执行基类中的构造函数? 利用下面这段代码进行打印测试 #include using namespace std; // 基类 class BaseClass { public: BaseClass() { cout << "BaseClass()" <<e 阅读详情

相关推荐

沧小海深入剖析xilinx的GTP/GTX核,掌握高速串行收发机制——第六章 接收端结构及功能说明

总目录在这哦~ https://blog.youkuaiyun.com/z123canghai/article/details/107700878 第六章 接收端结构及功能说明 子目录 6.1 RX的模拟前端 6.2 RX的OOB信号 6.3 RX的均衡器 6.4 RX的CDR 时钟数据恢复 6.5 RX时钟输出结构 6.6 RX 的极性控制 6.7 RX 的PRBS 6.8 Rx字节、字的对齐功能 6.9 Rx接收弹性缓冲区 6.10 Rx的时钟纠正 6.11 Rx接收通道绑定 6...

滄海的博客 1万+

c++继承中析构函数的调用顺序

在继承中的析构函数主要遵从一下四点规则: 1、首先调用派生类的析构函数(清理派生类的新增成员) 2、如果派生类中有子对象 , 则再调用派生类中子对象的析构函数 , 调用顺序是:在派生类中,先定义后调用。(清理派生类新增的成员对象) 3、再调用普通基类的析构函数(清理从基类继承来的新增成员) 4、最后调用虚基类的析构函数 #include using namespace std

zengchenacmer的专栏 4820

Tina Linux WiFi驱动移植避坑指南:以RTL8733bs为例,详解设备树、Kconfig与固件依赖

本文详细解析了在Tina Linux上移植RTL8733bs WiFi驱动的关键步骤与常见问题,涵盖设备树配置、内核依赖、固件加载及启动时序等核心环节。通过实战案例和排查清单,帮助开发者规避SDIO控制器配置、电源管理、GPIO极性等典型陷阱,确保驱动稳定运行。

weixin_29164185的博客 264

【C/C++】继承中构造函数与析构函数执行的顺序

构造函数执行顺序: 当派生类对象被创建时,首先会调用基类的构造函数,然后调用派生类自己的构造函数。 构造函数的调用顺序是按照继承的顺序,从基类依次往下调用。即先调用最上层的基类,再依次往下调用 定义子类对象,优先调用的是子类的构造函数,在子类的初始化参数列表初始化父类和子类的成员,先调用父类的构造函数初始化父类成员,再初始化子类成员(与内存布局顺序一致) 析构函数执行顺序: 析构函数的调用顺序与构造函数的调用顺序相反,先调用派生类自己的析构函数,再依次回溯调用基类的析构函数,直至最上层的基类的析构函数

努力让自己的能力配得上梦想. 2082

TortoiseGit提示No supported authentication methods available错误

一、问题 在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash却可以正常使用,不受影响。 通过调查,发现应该是TortoiseGit远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit缺少本地密匙)。由于TortoiseGit的默认网络SSH client是TortoiseGitPlink.exe,如下图所示。因此主要有两种方式来解决该问题: 不修改TortoiseGit的默认网络SSH client,此时需要为To

Jeffxu_lib的博客 2万+

自动驾驶IDM与MOBIL模型

IDM模型,自动驾驶

不想学好数学的汽车工程师不是一个好的程序员 1万+

C++继承中的构造函数和析构函数调用顺序

C++继承中的构造函数和析构函数调用顺序

A_easy_learner的博客 1203

Dataworks实现接口调用

在本地linux虚拟机(不用在意linux版本),安装Anaconda后配置对应的虚拟环境,将虚拟环境的python包整体打包(路径一般为:~/anaconda/envs/env_name/lib/pyyhon3.7/site-packages):上传资源,将第三方包上传至dataworks(注意:所有上传文件均要打包上传,直接上传文件会乱码导致无法使用):PyODPS,其中PyODSP2的python版本为2.7,PyODSP3的python版本为3.7。:在PyODPS中引用资源,然后开发接口。

hutc_Alan的博客 1681

C++继承下构造函数和析构函数执行顺序

c++继承下构造函数析构函数执行顺序一览

Every moment of My life !!! 1181

【小白深度教程 1.32】手把手教你从多视角图像进行 3D 重建(SfM 算法)

重建的目标是从一组照片中推导场景的几何结构,假设摄像机位置和内部参数是已知的或可以从图像集中猜测。 这是通过使用多个照片,在其中应用运动结构法(Structure from Motion,SfM)来解决像素级对应问题,部分地恢复3D信息来实现的。

2401_87064292的博客 2160

知识图谱大模型系列之 12 LLM 知识图谱构建器:从零到 GraphRAG 使用 LLM 知识图谱生成器在 GenAI 应用中提取和使用知识图谱(教程含源码)

为了更深入地了解 LLM 知识图谱构建器,GitHub 存储库提供了大量信息,包括源代码和文档。此外,我们的文档提供了详细的入门指南,而GenAI 生态系统则提供了有关可用更广泛工具和应用程序的进一步见解。

iCloudEnd的博客 2038

【深入理解C++】继承体系下构造函数和析构函数的调用顺序

继承体系下构造函数和析构函数的调用顺序

脚踏实地,仰望星空 704

Echarts - 去掉图表上的横线和竖线

效果图 默认效果: 变为如下图所示效果: 实现方法 官方配置文档:https://echarts.apache.org/zh/option.html#radar.splitLine 在 xAxis yAxis 配置中分别加入以下代码: splitLine: { show:false }

🏆 前端领域优质创作者 1万+

C++类继承中的构造函数和析构函数 调用顺序

在C++的类继承中,构造函数不能被继承(C11中可以被继承,但仅仅是写起来方便,不是真正的继承) 建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推; 析构对象时,其顺序正好与构造相反;   if(子类没有自定义构造函数) {          if(基类没有自定义构造函数)         {               用子类定义对象时,先自动调用基类的默认...

qq_37032670的博客 1593

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++继承中构造函数和析构函数的调用顺序

C++继承中父类构造函数和析构函数的调用顺序

Mr.Coder 3888

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

c++语言 自己构造函数 成员对象构造函数 调用顺序,c++类的组合继承中构造函数和析构函数的调用次序问题...

首先上一段代码://Order.cpp//构造函数和析构函数的调用顺序#include using namespace std;ofstream out("order.out");//输出到文件//宏定义#define CLASS(ID) class ID { \public: \ID(int) {out << #ID " constructor\n";} \~ID() { out&...

weixin_30449853的博客 192

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[C++] 类继承中构造函数和析构函数的调用顺序、为什么析构函数要写成虚函数

构造函数的调用顺序:自上而下 当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达最底层目标派生类的构造函数 析构函数的调用顺序:自下而上 当删除一个对象时,首先调用该派生类的析构函数,然后调用上一层基类的析构函数,依次类推,直到到达最顶层的基类析构函数 代码演示 #include <iostream> using namespace std; class Base { public: Base() { cout << "创建Ba

wangmj_hdu的博客 4417

C++单继承的构造函数和析构函数调用的顺序

1.继承构造函数调用顺序以及销毁的过程   先调用父类的构造函数,在调用子类的构造函数,析构函数调用相反。 转载于:https://www.cnblogs.com/liunx1109/p/9439358.html...

weixin_30677475的博客 202

C++类的继承中构造函数和析构函数调用顺序例子

/*当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的 构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。 简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是 要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时, 如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。 下面的这

Davidation的博客 522

c++类继承,构造函数和析构函数调用顺序

 class A { public: A() { printf("A\n"); } ~A() { printf("~A\n"); } }; class B : public A { public: B(){printf("B\n");} ~B() { printf("~B\n"); } };  int _tmain(int argc, _TCHAR* argv[]) { B *b= n

xiaoxinyu316的专栏 682

c++ 学习 之 继承中 父类子类构造函数和析构函数的调用顺序

可以看出,先调用父类的构造函数,再调用子类的构造函数,析构函数的调用顺序与之相反。

wniuniu_的博客 325

c++语言 自己构造函数 成员对象构造函数 调用顺序,C++中多继承 构造函数和析构函数 执行顺序...

构造函数派生类的对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成。将派生类的对象中由基类中说明的数据成员和操作所构成的封装体称为基类子对象,它由基类中的构造函数进行初始化。构造函数不能够被继承,因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化...

weixin_39957951的博客 395

继承时,构造函数和析构函数的调用顺序

继承时,构造函数和析构函数的调用顺序 保证你们一篇看懂,不懂得可以留言!!!一定给你们讲明白! 先调用父类的构造函数,再初始化成员,最后调用自己的构造函数 先调用自己的析构函数,再析构成员,最后调用父类的析构函数 如果父类定义了有参数的构造函数,则自己也必须自定义带参数的构造函数 父类的构造函数必须是参数列表形式的 多继承时,class D: public Base2, Base1, Base的...

low5252的博客 7752
上一篇: 继承中的类型兼容性原则
下一篇: C++基类与派生类中同名成员的调用
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值