创建派生类对象,必须首先创建基类对象;如果不调用基类构造函数,程序将使用默认的基类构造函数,因此如下代码等效:

RatedPlayer(unsigned int r = 0, 
const string & fn = "none",
const string & ln = "none",
bool ht = false)
{
rating = r;
}

RatedPlayer(unsigned int r = 0,
const TableTennisPlayer & tp)
: TableTennisPlayer(tp)
{
rating = r;
}
  • 派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数
  • 派生类构造函数应初始化派生类新增的数据成员
  • 释放对象的顺序与创建对象的顺序相反,即首先执行派生类的析构函数,然后自动调动基类的析构函数

注意:创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数。基类构造函数负责初始化继承的数据成员 ;派生类构造函数主要用于初始化新增的数据成员。派生类的构造函数总是调用一个基类构造函数。可以使用初始化器列表语法指明要使用的基类构造函数,否则将使用默认的基类构造函数。派生类对象过期时,程序将首先调用派生类析构函数,然后再调用基类析构函数。