1. 基类构造函数负责初始化继承的数据成员,派生类构造函数主要用于初始化新增的数据成员。
2.C++要求引用和指针类型与赋值的类型匹配,但是这一规则对继承来说例外。不过这种例外只是单向的,不可以将基类对象和地址赋给派生类引用和指针。
class TableTennisPlayer
{
private:
....
public:
....
}
class RatedPlayer: public TableTennisPlayer
{
private:
...
public:
...
}
可以:
RatedPlayer rplayer(1140,"Malloy","Duck");
TableTennisPlayer & rp=rplayer;
or:
TableTennisPlayer * rp=&rplayer;
不可以:
TableTennisPlay tplayer("","",true);
RatedPlayer & rp=tplayer;
RatedPlayer * rp=tplayer;
3.成员初始化列表
例如:(由逗号分隔初始化列表,前面带冒号)
Queue:: Queue(int qs): qsize(qs), front(NULL), real(NULL), item(0)
{
}
注意
1.只有构造函数可以使用这种初始化列表句法。
2.对于const类成员,必须使用这种句法,上面例子中,之前我们在Queue类中私有成员中定义了: const int qsize;
3. 对于被申明引用的类成员,必须使用这种句法:
class Agency{...};
class Agent
{
private:
Agency & belong; //引用类型为Agency,
}
cpp:(对构造函数进行初始化)
Agent::Agent(Agency &a ) : belong(a);// 将belong初始化为a,必须采用成员初始化列表。