一.概念
类中的成员数据是另一个类的对象。
引入的原因:1.可以再已有的抽象的基础之上实现更复杂的抽象。
2.通过对复杂对象进行分解、抽象,使我们能够将一个复杂对象理解为简单对象的组合。
3.分解得到复杂对象的部分对象,这些对象比它高层的复杂对象更容易理解和实现。饭后由这些部件对象来“装配”复杂对象
二.类组合的构造函数的设计
原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。
2.声明形式:
类名::类名(对象成员所需的形参,本类成员形参):对象1(参数),对象2(参数),..........
{本类初始化}
三.类组合的构造函数的调用
顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)。
注意:若调用缺省构造函数(既无形参),则内嵌对象的初始化也将调用相应的缺省构造函数。
四.前向引用声明
原因:类应该先声明后使用,如果需要在某个类的声明之前引用该类,则应进行前向引用声明。
前向引用声明只为程序引入一个标识符,但具体声明在其他地方。
例:class B;
class A
{
public:
void f(B b);
};
class B
{
public:
void g(A a);
}