C++派生类含有成员对象构造函数析构函数顺序

2023-11-07

参考博客:传送门1

当类中含有对象成员时:

  • 类的构造函数要包含对成员对象的初始化,如果构造函数的成员初始化列表没有包含对成员对象的初始化,系统会自动调用成员对象的无参构造函数。顺序上:先调用成员对象的构造函数,当所有的成员对象都执行了自身类的构造函数以后再执行当前类的构造函数
  • 调用析构函数时先调用类的构造函数,再调用成员对象的构造函数。

当类继承于另一个类时:

  • 如果没有显式地在构造函数的成员初始化列表中调用基类的构造函数,会自动先调用基类的无参构造函数。
  • 析构的时候先调用派生类的析构函数,再调用基类的构造函数。

当类中含有成员对象,同时继承了某个类的时候,他们的构造函数析构函数的顺序是固定的(与成员初始化列表中的顺序没有关系):

构造函数:基类->成员对象->派生类
析构函数:派生类->成员对象->基类

例如:

#include<iostream>
#include<cstdio>
using namespace std;

class A
{
public:
	A()
	{
		cout << "A" << endl;
	}
	~A()
	{
		cout << "~A" << endl;
	}
};

class C
{
public:
	C()
	{
		cout << "C" << endl;
	}
	~C()
	{
		cout << "~C" << endl;
	}
};

class B:public A
{
	C c;
public:
	B()
	{
		cout << "B" << endl;
	}
	~B()
	{
		cout << "~B" << endl;
	}
};

int main()
{
	B b;
}

运行结果:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++派生类含有成员对象构造函数析构函数顺序 的相关文章

  • 【OpenCV学习笔记】【编程实例】一(VS2010/MFC+OPenCV2.4.7读取图片和摄像头)

    问题 VS2010 MFC OpenCV 显示图片 链接 http jingyan baidu com article f71d60375ddd411ab641d1e3 html 说明 可以了解一个基本的应用OpenCV的MFC程序的基本流
  • 【C++】一文解析std::binary_function、std::bind1st、std::bind2nd、std::bind

    STL中有一个叫做 适配器 的概念 它指的是某些函数可能定义了两个形参 但是某些算法需要的函数却有时候需要一个形参 那么就需要对其进行适配 将原本只需要两个参数的函数转变成需要1和参数就能正常运行的函数 就像你为你的笔记本充电 能直接一根火
  • 【VS2010学习笔记】【异常处理】二(VS2008/VS2010中MFC“资源被另一个编辑器打开”)

    问题 VS2008 VS2010中MFC 资源被另一个编辑器打开 的有关问题 解决方法 菜单 窗口 选择 关闭所有文档 再次打开就可以了
  • C++中vector用法

    vector 向量 C 中的一种数据结构 确切的说是一个类 它相当于一个动态的数组 当程序员无法知道自己需要的数组的规模多大时 用其来解决问题可以达到最大节约空间的目的 用法 1 文件包含 首先在程序开头处加上 include以包含所需要的
  • C++中int与char相互转换

    一 ASCII表 了解int与char相互转换之前 先让我们看一下ASCII码表 其中数字字符对应的位置为 48 57 二 char转int char转int之前 先将运算式中的每个字符都转换成ASCII码值 再进行计算 以下代码为例 其中
  • 【C++】4、Preprocessor 预处理:条件编译、源文件包含、宏替换、重定义行号、错误信息、编译器预留指令

    文章目录 一 概述 二 格式 2 1 条件编译 2 2 源文件包含 2 3 宏替换 2 3 1 语法 2 3 2 C 标准内置的预定义宏 2 4 重定义行号和文件名 2 5 错误信息 2 6 编译器预留指令 三 应用场景 C 的 Build
  • C++ ——模板 & 标准模板库STL

    C 知识基础 流操作符 类 基础 初始化和重载 类 高级 继承和多态 模板 标准模板库STL 目录 C 一 模板 1 函数模板 2 类模板 二 标准模板库STL 1 容器类 Container 2 迭代器 Iterator 3 泛型算法 总
  • 用虚拟串口进行串口调试

    由于现在的笔记本电脑一般不带有串口 再进行串口调试时 可以用虚拟串口代替 虚拟串口下载链接 虚拟串口 Win7 下载 串口调试助手下载链接 串口调试助手 VS2010串口程序 使用的unicode库 纯API 不利用Mscomm控件 下载链
  • 【C++】5、构建:CMake

    文章目录 一 概述 二 实战 2 1 内部构建 外部构建 2 2 CLion Cmake 一 概述 CMake 是跨平台构建工具 其通过 CMakeLists txt 描述 并生成 native 编译配置文件 在 Linux Unix 平台
  • 【VS2010学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之WM_TIMER消息处理函数的添加问题)

    在启动定时器后 就需要添加定时器的消息处理函数 基本的步骤就是 在VS中 用户界面设计右击打开Class Wizard 切换到Message选项卡 然后找到WM TIMER这个message 双击右边的OnTimer句柄 然后进入回调函数的
  • 字符串旋转(C#)

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部 请定义一个函数实现字符串左旋转操作的功能 比如 输入字符串 abcdefg 和数字2 该函数将返回左旋转两位得到的结果 cdefgab 来源 力扣 LeetCode 链接 ht
  • 高斯滤波的快速实现

    http www cnblogs com ImageVision archive 2012 06 11 2545555 html 二維高斯函數具有旋轉對稱性 處理後不會對哪一個方向上的邊緣進行了過多的濾波 因此相對其他濾波器 具有無法比擬的
  • 【C语言】C语言的495个问题

    文章目录 1 声明和初始化 基本类型 1 1 各类型区别 1 2 为什么不精确定义标准类型的大小 1 3 因为C没有精确定义标准类型大小 那么用typedef定义int16和int32是否能解决问题呢 1 4 新64位机上64位类型是什么样
  • 【数组指针】 仅此一篇 让你深刻理解数组指针

    作者 Mitu 本帖内容著作权归作者所有 转载请务必保留本文链接 数组指针 数组指针 顾名思义 就是指向数组的指针 我们是这样定义它的 int p n n为要定义的个数 按照优先级运算 与 优先级相同 根据结合律 就从左向右运算 里是 p
  • C#比较运算符及解析

    文章目录 博主写作不容易 孩子需要您鼓励 万水千山总是情 先点个赞行不行 比较运算符得出的结果是逻辑型 bool 即 True 或 False 比较运算符又称关系运算符 我们可以把它理解为一种判断 判断的结果是真或者是假 关系表达式的返回值
  • 【C++】3、排序算法 C++ 实现

    文章目录 排序算法程序 1 冒泡排序 2 直接插入排序 3 希尔排序 4 快速排序 5 总结 排序算法程序 1 冒泡排序 通过对相邻数据的元素进行交换 逐步将待排序序列排成有序序列的过程 如升序排列 扫描整个待排序序列 非整个序列 不扫描已
  • 在VS2010进行MFC编程设置字符集的问题(使用多字节字符集引起错误)

    1 error C2664 WideCharToMultiByte 不能将参数 3 从 CString 转换为 LPC WSTR 参数3是m edit 2 error C2039 GetWindowTextW 不是 CComboBox 的成
  • 常用设计模式-命令模式

    命令模式 讲一个请求封装成一个对象 可以让不同的请求对客户进行参数化 对请求排队或者记录请求日志 以及支持可撤销的操作 别名为事务模式或者动作模式 这样两者之间通过命令对象进行沟通 这样方便将命令对象进行储存 传递 调用 增加与管理 命令模
  • C#chart控件绘制折线图、柱状图、饼图、雷达图

    转载来源 https blog csdn net u011854789 article details 82946553 参考链接 http www cnblogs com winshe articles 6604406 html http
  • 【C++】在线IDE

    1 洛谷在线IDE https www luogu com cn ide 2 菜鸟工具 https c runoob com compile 12 3 Cloud Studio https cloudstudio net

随机推荐

  • github哪些协议能商用_版权->GitHub代码版权你关心过吗?

    作为一个无版权习惯的码农 终于遇到一个大坑 堵住了自己一条光明大路 那就是 版权 大部分程序员遵从的原则就是不重复造轮子 作为一个非著名相声演员 哦不 非大牛程序员 咳咳 把这句至理名言发挥的更是淋漓尽致 只要有需求 想好大致架构思路和逻辑
  • 数据组合利器:从入门到精通Python中的zip()函数应用

    介绍 zip 函数是Python内置的一个非常有用的函数 它可以将多个可迭代对象打包成一个元组构成的新的可迭代对象 本文将深入探讨zip 函数的用法 从入门到精通 目录 zip 函数的基本用法 使用zip 函数合并列表 使用zip 函数进行
  • Unity中的UGUI源码解析之事件系统(7)-输入模块(上)

    Unity中的UGUI源码解析之事件系统 7 输入模块 上 从今天开始 我们进入事件系统的的最后一部分 输入模块 InputModules 输入模块是事件系统的核心 是真正使用检测和调用回调的地方 输入模块主要有几个角色 分别为 BaseI
  • 深入了解jQuery的children方法

    jQuery是一种简化HTML文档遍历和操作 事件处理 动画和AJAX等常见任务的JavaScript库 而children 方法是其中之一 它是一个非常实用的方法 可以让我们在DOM树中轻松找到特定元素的子元素 并进行进一步操作 在本文中
  • Nginx配置参数解释

    目录 worker processes work cpu affinity worker rlimit nofile events模块 1 use method 2 worker connections 3 multi accept htt
  • grep正则表达式例子

    grep支持的正则表达式有很多 这里尽量全面地列出各种正则表达式及其说明 行首匹配 用于匹配字符串的开始 行尾匹配 用于匹配字符串的结束 匹配除换行符外的任意一个字符 匹配零个或多个前面的字符 匹配一个或多个前面的字符 匹配零个或一个前面的
  • 2020三校生英语计算机试卷,2020江西省“三校生”对口升学考试考试说明英语科目最新考试英语复习教材考前模拟试卷课本教材资料试题...

    三 题型示例 第 I 卷 选择题 共 125 分 单项选择题 共 25 小题 每小题 1 分 满分 25 分 从 A B C D 中 选出可以填入空白处的最佳选项 并在答题卡上将该项 填黑 1 Thank you very much Mr
  • Flink SQL CDC 的实时增量同步数据

    问题导读 1 怎样实现基于 Flink SQL CDC 的数据同步方案 2 CDC 是否需要保证顺序化消费 3 GROUP BY 结果如何写到 Kafka 传统的数据同步方案与 Flink SQL CDC 解决方案业务系统经常会遇到需要更新
  • 程序猿 C#常规面试题

    1 NET框架是什么 NET框架是Microsoft的软件开发框架 它提供了一个受控的编程环境 可以在基于Windows的操作系统上开发 安装和执行软件 2 NET和C 的区别 NET是一种框架 CLR公共语言运行库是 NET FrameW
  • Avalon 学习系列(四)—— 循环遍历

    Avalon2 的 ms for 绑定集齐了 ms repeat ms each ms with 的所有功能 更加好用 性能也提升了很多 Avalon 不需要 vue 或 react 那样使用 key 属性来提高性能 内部已经帮你搞定了 循
  • 1.1 计算机的发展与应用

    一 计算机的发展 1 计算机的发展 1 计算机的奠基人 艾兰 图灵 4个贡献 图灵机 可计算性理论 人工智能之父 图灵奖 冯 诺依曼 5个贡献 EDVAC 存储程序 现代计算机的基本结构 计算机之父 五部分 2 第一台 首台通用电子计算机
  • readme for esoe tools

    Pack hta Pack hta is a tool of ESOE to pack js files It s also a demo of ESOE It has below features file New Open Saveed
  • L->data 与 L.data比较

    L gt data 与 L data比较 当L是结构体 类的 指针时 用L gt data指明结构体中的变量 面向对象中 类的对象 而当L data则是结构体变量 类的对象 用L data表示
  • docker 容器绑定hosts

    问题 最近有个需求需要在docker容器里进行hosts绑定 尝试了将hosts 写在Dockerfile里 构建出镜像 但是启动容器后绑定的hosts会丢失 而且手动进入容器绑定hosts后 重启容器后hosts也会丢失 原因 简单的说
  • tensorflow的归一化与梯度下降

    代码 coding utf 8 By author MZ import numpy as np from sklearn datasets import load boston import tensorflow as tf from sk
  • Linux下查询比较大的文件命令

    size medium color blue b Linux下查询很大文件的快速命令 b color size find usr sersync type f size 3k color green size medium 这个命令意思是
  • linux backlog,linux下backlog设置 - 就爱阅读网

    当业务有高并发的情况的时候 需要调整backlog 对于PHP而言 需要注意以下3方面 1 操作系统 sysctl 2 web端 nginx 3 php后端 php fpm 操作系统以Ubuntu为例 编辑默认配置文件 etc sysctl
  • C++: 输入二进制以十进制显示

    C 输入二进制以十进制显示 代码展示 代码展示 输入二进制以十进制显示 include
  • regsvr32 /i hhctrl.ocx出现无法注册

    运行 输入regsvr32 i hhctrl ocx出现无法注册hhctrl ocx 无法找到dllinstall输入点 无法注册这个文件 在另一台电脑c windows system32 itss dll拷这个文件过去另一电脑的同一路径
  • C++派生类含有成员对象构造函数析构函数顺序

    参考博客 传送门1 当类中含有对象成员时 类的构造函数要包含对成员对象的初始化 如果构造函数的成员初始化列表没有包含对成员对象的初始化 系统会自动调用成员对象的无参构造函数 顺序上 先调用成员对象的构造函数 当所有的成员对象都执行了自身类的