类中的成员数据是另一个类的对象。
可以在已有抽象的基础上实现更复杂的抽象。
类组合的构造函数设计
原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。
声明形式:
类名::类名(对象成员所需的形参,本类成员形参)
:对象1(参数),对象2(参数),......
{ 本类初始化 }
构造函数调用顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)
初始化列表中未出现的内嵌对象,用默认构造函数(即无形参的)初始化
系统自动生成的隐含的默认构造函数中,内嵌对象全部用默认构造函数初始化
例:
class Part { //部件类
public:
Part();
Part(int i);
~Part();
void Print();
private:
int val;
};
class Whole {
public:
Whole();
Whole(int i, int j, int k);
~Whole();
void Print();
private:
Part one;
Part two;
int date;
};
Whole::Whole() {
date=0;
}
Whole::Whole(int i, int j, int k)
: two(i), one(j), date(k)
{}
//...其他函数的实现略