《C++ PrimerPlus(第6版)中文版》—第13章 类继承
①
RatedPlayer::RatedPlayer(unsigned int r, const string & fn, const TableTennisPlayer & tp) : TableTennisPlayer(tp) //成员初始化方式一,在函数体中初始化
{
rating = r;
}
由于tp的类型为TableTennisPlayer &,因此将调用基类的复制构造函数,基类没有定义复制构造函数,则编译器将自动生成一个。
上述初始化方式也可以用以下方式进行:
RatedPlayer::RatedPlayer(unsigned int r, const string & fn, const TableTennisPlayer & tp) : TableTennisPlayer(tp), rating(r) //成员初始化方式二,使用成员初始化列表语法
{
}
有关派生类构造函数的要点如下:
首先创建基类对象;
-
派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数;
-
派生类构造函数应初始化派生类新增的数据成员。(考虑到速度更快,可以使用成员初始化列表语法)
② 除虚基类外,类只能将值传递回相邻的基类,但后者能使用相同的机制将信息传递给相邻的基类,依此类推。
③ 成员初始化列表只能用于构造函数。