关于构造函数和析构函数的调用顺序

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

class base1/*********************/
{
protected:
	char c;
public:
	base1(char ch);
	~base1();
};

base1::base1(char ch)
{
	c = ch;
	cout<<"c ="<<c<<endl;
	cout<<"base1构造函数被调用!"<<endl;
}

base1::~base1()
{
	cout<<"base1析构函数被调用!"<<endl;
}

class base2/*********************/
{
protected:
	int i;
public:
	base2(int j);
	~base2();
};

base2::base2(int j)
{
	i=j;
	cout<<"i ="<<i<<endl;
	cout<<"base2构造函数被调用!"<<endl;
}

base2::~base2()
{
	cout<<"base2析构函数被调用!"<<endl;
}

/*继承顺序影响构造、析构函数的调用顺序*/
class derive:public base1,public base2
//class derive:public base2,public base1
{
	int k;
public:
	derive(char ch,int i,int kk);
	~derive();
};

derive::derive(char ch,int ii,int kk):base1(ch),base2(ii),k(kk)
{
	cout<<"k="<<k<<endl;
	cout<<"derive构造函数被调用!"<<endl;
}

derive::~derive()
{
	cout<<"derive析构函数被调用!"<<endl<<endl;
}

int main()
{
	derive A('B',10,15);
	
	return 0;
}

 

/***********************************************************************/

 

/********* test2.cpp **********/

#include <iostream>
using namespace std;

class base1/*********************/
{
public:
	base1();
	~base1();
};

base1::base1()
{
	cout<<"base1()"<<endl;
}

base1::~base1()
{
	cout<<"~base1()"<<endl;
}

class base2/*********************/
{
public:
	base2();
	~base2();
};

base2::base2()
{
	cout<<"base2()"<<endl;
}

base2::~base2()
{
	cout<<"~base2()"<<endl;
}

class derive
{
private:
	base1 a;
	base2 b;
/********************
	base2 a;
	base1 b;
********************/
public:
	derive();
	~derive();
};

derive::derive()
{
	cout<<"derive()"<<endl;
}

derive::~derive()
{
	cout<<"~derive()"<<endl<<endl;
}

int main()
{
	derive *p = new derive;
	delete p;

	return 0;
}

 

 

构造函数:

派生类先调用基类的构造函数(继承顺序:从左往右,数据成员定义顺序:从上往下),再调用派生类自己的构造函数。

 

析构函数:

派生类先调用派生类自己的析构函数,再调用基类的析构函数(继承顺序:从右往左,数据成员定义顺序:从下往上)。

 

 

总之,(创建类对象时-调用构造函数的顺序 和 释放该对象时-调用析构函数的顺序)相反。
中国高精度年度平均气温栅格数据集(1901-2024) 本文基于中国月度平均气温栅格数据集,计算生成1901-2024年1km分辨率的年度平均气温数据集,并按中国省市行政区划进行裁剪。该数据集融合CRU全球数据和WorldClim高分辨率数据,经496个站点验证,具有高时空精度和长时间序列特点,覆盖全国(含港澳台)逾百年气温记录,为气候变化研究、生态水文分析及农业生产评估等提供重要数据支撑。数据格式为Tif,单位为0.1℃,可获取全国、各省及各市三个尺度的气温栅格数据。 阅读详情

相关推荐

量化交易新手必看:如何用vnpy+Tushare轻松获取A股历史数据(附完整代码)

本文为量化交易新手提供了使用vnpy和Tushare构建A股历史数据获取系统的完整指南。通过详细的代码示例,手把手教你搭建环境、封装数据获取引擎,并实现日线等数据的格式转换与本地存储,为策略回测与分析奠定坚实的数据基础。

weixin_29098117的博客 378

构造和析构函数调用顺序

参考文章: C++中构造函数与析构函数的调用顺序 C++构造函数和析构函数的调用顺序   一. 理论 1. 构造函数和析构函数 ①构造函数 构造函数不能有返回值 缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化为零或空  创建一个对象时,系统自动调用构造函数 ②析构函数 析构函数没有参数,也没有返回值。不能重载,也就是说,一个类中只可...

SJLin 1万+

STM32CubeIDE无法连接STLinkV2的一个可能原因

前些日子买了个新的STLINKV2 , ( 老的被我家猫猫一泡尿送上西天了)刚开始还挺正常的, 后来有一天就突然间发现无法调试了.网上尝试了各种方法, 各种操作. 百度了好久. 最后好在我自己研究出来了.我使用的是 STM32CubeIDE 这个开发工具调试选项如下图其它的不需要修改, 然后点击下面的apply 按钮, 然后调试Debug, 提示 No STLink 如下图后来尝试了下载ST-LINK Utility 用它是可以正常连接STLink的, 然后也能正常进行升级操作.

走错路的程序员 9823

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

1、构造函数的调用顺序  基类构造函数、对象成员构造函数、派生类本身的构造函数   2、析构函数的调用顺序 派生类本身的析构函数、对象成员析构函数、基类析构函数(与构造顺序正好相反)  3、特例  局部对象,在退出程序块时析构 静态对象,在定义所在文件结束时析构 全局对象,在程序结束时析构  继承对象,先析构派生类,再析构父类  对象成员,先析构类对象,再析构对象成员 #in...

齐天佑 2万+

WSL Ubuntu20 通过1Panel配置SSH服务的完整避坑指南

本文详细介绍了在WSL Ubuntu20环境下通过1Panel配置SSH服务的完整指南,包括环境准备、SSH服务安装与基础配置、1Panel中的SSH管理技巧以及连接测试与故障排查。特别针对WSL特性提供了避坑建议,如IP动态变化处理、SSH服务初始化配置等关键步骤,帮助用户高效搭建稳定的SSH服务环境。

weixin_29239279的博客 414

Qt for WebAssembly环境搭建

一、前言 二、Ubuntu 1、在线安装Qt15 在线安装下载器:https://download.qt.io/official_releases/online_installers/ 安装时记得勾选WebAssembly,如下: 2、安装依赖 # Install Python sudo apt-get install python2.7 # Install CMake (optional, only needed for tests and building Binaryen) sudo apt

贝勒里恩的博客 3667

构造函数和析构函数的调用顺序

目录构造函数和析构函数构造函数复制构造函数析构函数构造函数与析构函数的调用顺序单继承多继承 构造函数和析构函数 构造函数 构造函数是特殊的成员函数,与类同名,没有返回类型,而且允许重载。如果没有为类显式定义任何构造函数,编译器将自动为类生成默认构造函数(不带任何参数)。 复制构造函数 复制构造函数、赋值操作符合析构函数总称为复制控制。复制构造函数只有单个形参,而且该形参是对本类类型的引用(通常用c...

banzhuan133的博客 3278

深度解析:Android开发工程师(嵌入式系统方向)职位 - 技术需求、面试准备与发展路径

本文深入分析了嵌入式Android开发工程师的岗位要求和技术内涵。该职位需要掌握C/C++、Linux系统编程、硬件接口等核心技术,能够进行Android系统底层定制开发,包括HAL层实现、Framework修改、性能优化等工作。文章详细解读了岗位职责,梳理了必备技术栈,提供了针对性的面试问题与参考答案,并探讨了职业发展路径。这类岗位要求开发者兼具软件工程能力和硬件基础知识,适合在智能电视、机顶盒、车载系统等嵌入式领域发展的技术人员。

郑伟强dev的专栏 132

C++中构造函数与析构函数的调用顺序

1.参考文献 参考1: C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定 参考2: 构造函数、拷贝构造函数和析构函数的的调用时刻及调用顺序 参考3: C++构造函数与析构函数的调用顺序 2.构造函数、析构函数与拷贝构造函数介绍 2.1构造函数 构造函数不能有返回值缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化

xwdreamer的专栏 2万+

【skill】漫剧 AI 视频创作的知识库 + API 调用手册

方案适用场景在对话中使用,自动触发注入到任何 LLM(Cursor/Windsurf/Claude API)Python 模块集成到自动化管线/批量生成GitHub 又限速了,不过前几轮搜到的已经够用了。根据搜索结果,结合已分析过的项目,给你整理完整对比 🐮。

突围 977

【YOLO系列】YOLOv5超详细解读(源码详解+入门实践+改进)

一文带你详细了解YOLOv5(含YOLO系列论文讲解+源码详解+入门实践+算法改进)

路人贾的博客 25万+

c++构造函数和析构函数的调用顺序

在使用构造函数和析构函数时,需要特别注意对他们的调用时间和调用顺序,在一般情况下,调用析构函数的次序正好与调用构造函数的次序相反,最先被调用的构造函数,其对应(同一对象中的)析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。 简单的说:其构造函数的顺序就一句话: 基类构造函数->成员的构造函数->构造函数体语句 看一下实例代码: #include <iost...

weixin_43700340的博客 7177

【Python】解决 ERROR: Exception:Traceback (most recent call last):(亲测有效)

1、遇到问题2、问题解决

Fanjufei的博客 1万+

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

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

low5252的博客 7749

怀旧版电脑GBC模拟器

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C++ 构造函数和析构函数的调用顺序、虚析构函数的作用

当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的 构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。

oohaha_123的专栏 6001

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

派生类的构造函数和析构函数的调用顺序

通常情况下: 当创建派生类对象时: 基类的构造函数——>派生类的构造函数; 当撤消派生类对象时: 派生类的析构函数——>基类的析构函数。 1.派生类的构造函数和析构函数的调用顺序 (1) 输出的是:基类的构造函数 基类的构造函数 派生类的构造函数 输出...

weixin_40535588的博客 3486

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【C++】构造函数、析构函数在局部、静态以及全局的调用和释放顺序

在局部域中,后定义的先析构,满足"后进先出",先定义的先构造 局部和静态:局部优先调用对应的析构函数,满足"后进先出",静态最后调用析构函数 局部,静态,全局:构造顺序是从 全局、静态--> 局部、静态,析构顺序是 局部 --> 全局、静态("后进先出")

cilmy23的note 2559

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

调用构造函数 和 析构函数的顺序 在使用构造函数和析构函数的时候,需要特别注意对它们的调用时间和调用顺序,如下是一个例子:

LC的专栏 1299

析构函数和构造函数的调用顺序

先看看构造函数的调用顺序规则,只要我们在平时编程的时候遵守这种约定,任何关于构造函数的调用问题都能解决;构造函数的调用顺序总是如下: 1.基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。 2.成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。 3.派生类

ivysister的专栏 714

C++派生类的构造函数和析构函数的调用顺序实战

一点睛 1构造函数调用顺序规则如下: 1.1基类构造函数 1.2成员对象构造函数 1.3派生类构造函数 析构函数的调用顺序与构造函数调用顺序正好相反。 析构函数在下面3种情况下被调用 对象生命周期结束被销毁时 delete指向对象的指针时,或delete指向对象的基类类型指针,并且其基类析构函数是虚函数时 对象i是对象o的成员,o的析构函数被调用时,...

实践求真知 1514

C++构造函数和析构函数调用顺序

用实例验证C++构造函数与析构函数的调用顺序

极客熊猫 674

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

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

wangmj_hdu的博客 4417

C++:派生类的构造函数和析构函数的调用顺序

一、派生类 在C++编程中,我们在编写一个基类的派生类时,大致可以分为四步: • 吸收基类的成员:不论是数据成员还是函数成员,派生类吸收除基类的构造函数和析构函数之外的全部成员。 • 改造基类函数:在派生类中声明一个或多个与其(某个)基类中的成员函数同名的成员函数,并将它(们)根据新的需求进行重写 • 发展新的成员:在派生类中添加新的成员变量和成员函数,其中新添加的成员要求必须和...

weixin_38607041的博客 451
上一篇: 关于拷贝函数
下一篇: 常用单片机汇编指令
channel310
博客等级 码龄14年 5粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值