C++中类中同时存在继承以及组合时候,构造函数的构造顺序

C++中类中同时存在继承以及组合时候,构造函数的构造顺序

大家好,又见面了,我是全栈君。

C++的一大特点就是面向对象,面向对象主要就是类的一些相关特性(封装、继承、多态)。

那么在类的继承以及类的成员属性包含其他类实例对象的时候,构造函数的构造顺序到底是怎么样子的呢?相信大家都知道,实例化对象首先需要的是调用自身的构造函数进行分配内存空间之后进行实例化对象,这就是构造函数的整个过程(两步)。

那么当一个类对象既包含了继承关系同时也在自身的成员属性中包含了其他类对象的实例化的时候,那么这时候实例化该类的对象时候,构造函数的顺序会是怎么样子的呢?下面来看看这一段代码吧。


#include "iostream"

using namespace std;

class A { 
   
public:
	A() { 
   
		cout << "A 类的构造函数" << endl;
	}
private:
	int i_a;
};

class B { 
   
public:
	B() { 
   
		cout << "B 类的构造函数" << endl;
	}
private:
	int i_b;
};

class C :public A{ 
     // 类C继承与类A(C:派生类、子类;A:基类父类)
public:
	C() { 
   
		cout << "C 类的构造函数" << endl;
	}
private:
	B b;          // 类C中组合有B类对象成员
	int i_c;
};

int main()
{ 
   
	C c;              // 实例化一个C类的对象
	system("pause");
	return 0;
}

这就是一个简单的继承加上组合的小demo,从上面的小demo中可以看出类C继承与类A,并且在类C中组合了类B的实例化对象,那么我们可以直接到以下的结果,可以得知。

A 类的构造函数
B 类的构造函数
C 类的构造函数

构造顺序是首先构造继承的父类,其次构造组合中的实例对象,最后才是构造自己本身。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115096.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mybatis常用jdbcType记录[通俗易懂]

    Mybatis常用jdbcType记录[通俗易懂]前言:Java常用的数据类型:https://blog.csdn.net/zhangyong01245/article/details/101310236Mysql常用的数据类型:https://blog.csdn.net/zhangyong01245/article/details/101157289常用数据类型表:MysqljdbcTypeJavatiny…

    2022年10月20日
    2
  • 程序员,在北上广深杭赚够100万,就逃回二三四线城市生活,靠谱吗?

    程序员,在北上广深杭赚够100万,就逃回二三四线城市生活,靠谱吗?无意间刷到一个话题,北漂程序员,赚够100万,然后回三四线城市享受生活,不确定这个想法靠不靠谱。讲真,我觉得我在这个话题上还是挺有话语权的。就来给大家唠唠,看能不能提供一丢丢参考价值。我没有在北京搬砖过,但在苏州搬砖过,苏州和北上广深杭比起来,肯定有差距,但不得不承认,苏州的发展速度确实是有目共睹的。目前已经在三线城市洛阳生活了多年,生活品质不能说有多高,但生活的基础条件我觉得都还过得去。尤其是其中很重要的一点,教育资源是能跟得上的。01、十分怀念那苏州说实话,还是挺怀念苏州那段时光的。苏州不

    2022年7月26日
    6
  • heap&stack 区别

    heap&stack 区别1 heap 是堆 stack 是栈 2 stack 的空间由操作系统自动分配和释放 heap 的空间是手动申请和释放的 heap 常用 new 关键字来分配 3 stack 空间有限 heap 的空间是很大的自由区 在 Java 中 若只是声明一个对象 则先在栈内存中为其分配地址空间 若再 new 一下 实例化它 则在堆内存中为其分配地址 4 举例 数据类型变量名 这样定义的东西在栈区

    2025年6月20日
    4
  • 压测工具jmeter怎么使用_并发压力测试工具

    压测工具jmeter怎么使用_并发压力测试工具一、Jmeter下载进入官网:http://jmeter.apache.org/1.第一步进入官网如下图2.选择进行下载,下载下来为一个压缩包,解压即可。3.我下载的是jmeter4.0版本,

    2022年8月2日
    6
  • WLAN与WIFI的区别[通俗易懂]

    WLAN与WIFI的区别[通俗易懂]WLAN与WIFI的区别WLAN简介:WLAN全称为:WirelessLocalAreaNetworks,中文解释为:无线局域网络,是一种利用射频(RadioFrequencyRF)技术进行据传输的系统,该技术的出现绝不是用来取代有线局域网络,而是用来弥补有线局域网络之不足,以达到网络延伸之目的,使得无线局域网络能利用简单的存取架构让用户透过它,实现无网线、无距离限制的通畅网络。

    2022年7月27日
    10
  • 常用的Java工具,16个

    常用的Java工具,16个在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。一.org.apache.commons.io.IOUtilscloseQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块toString:转换IO流、Uri、byte[]为Stringcopy:IO流数据复制,从输入流写到输出流中,最大支持2GB

    2022年7月7日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号