组合类的构造函数的调用顺序是怎样的
#include<iostream>
using namespace std;
class Part //部件类
{
public:
Part() {}
Part(int i) {cout<<"Part's construction called"<<endl;}
private:
int val;
};
class Whole
{
public:
Whole();
Whole(int i,int j,int k);
private:
//这三个变量的声明顺序改变,打印输出的结果仍然一样
Part one;
Part two;
int date;
};
Whole::Whole()
{
date=0;
}
Whole::Whole(int i,int j,int k):
one(j),date(k), two(i) //这里的初始化顺序改变,打印输出结果仍然一样
{ cout<<"Whole's construction called!"<<endl; }
int main(void)
{
Whole w(1, 2, 3);
return 1;
}
输出的是
Part's construction called
Part's construction called
Whole's construction called!
在注释的地方我更换顺序,结果都是一样的
我在书上看的原文如下:
“构造函数调用顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)”
我不明白,它所谓的按内嵌时的声明顺序,是什么意思
相关推荐
C++类总结多态继承
C++中类的总结,适合毕业找工作,或新手突击C++用
c++ 习题 派生类和继承
熟练掌握三种继承以及虚继承的概念知识,概念填空题 简答题 派生类如何实现对基类私有成员的访问?什么是类型兼容规则?派生类的构造函数是怎样的执行顺序,析构函数的执行顺序是如何实现的?什么是虚基类?它有什么作用?含有虚基类的派生类的构造函数有什么要求,什么是最远派生类,建立一个含有虚基类的派生类的对象时,为什么由最远派生类的构造函数负责虚基类的初始化?继承与组合之间的区别与联系是什么?派生类的构造函数是怎样的执行顺序,析构函数的执行顺序是如何实现的?
C++概念理解笔试题
1.关联、聚合(Aggregation)以及组合(Composition)的区别? 涉及到UML中的一些概念: 关联是表示两个类的一般性联系,比如“学生”和“老师”是一种关联关系; 聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系: 从实现的角度讲,聚合可以表示为: class A {…} class B { A* a; …..} 组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系: 实现的形式是:
C++作业习题
关于纯虚函数的一节练习题,有初学C++的可以进去试一试。
C++构造函数的调用顺序
构造函数的执行次序如下: 1,调用基类构造函数,调用顺序按照他们的继承时声明的顺序。 2,调用内嵌成员对象的构造函数,调用顺序按照他们在类中声明的 顺序。 3,派生类的构造函数体中的内容。



