一个类的对象可以作为另一个类的数据成员,此时把该对象称为类的对象成员。
当一个类中出现对象成员时,该类的构造函数就要为对象成员初始化,对象成员的初始化必须在构造函数的初始化表中完成。
注意:
初始化对象成员时必须用对象成员名,而不是它的类型名。例如:
class Date
{
int year, month, day;
Date(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
};
class Person
{
char name[12];
char sex[4];
Date birthday;
public:
Person(char*, char*, int, int, int);
……
};
Person:Person(char *n, char *s, int y, int m, int d):birthday(y, m ,d)
{
strcpy(name, n);
strcpy(sex, s);
}
此处使用birthday(y, m, d),不能使用Date(y, m, d)。
若一个类包含对象成员,在建立该类的对象时,先调用对象成员的构造函数,初始化相应的对象成员,然后才执行该类的构造函数。
如果一个类包含多个对象成员,对象成员的构造函数的调用顺序由它们在该类中的说明顺序决定,而它们在初始化表中的顺序无关。