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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

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

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