基类与派生类、多态公有继承、虚函数的重载与重写、protected、抽象基类(ABC)
1.派生类与基类:
派生类对象存储了基类的数据成员和方法(即继承了基类的实现和接口),派生类需要自己添加新的构造和额外的数据成员即成员函数。
派生类的构造函数必须给新成员和继承的成员提供数据。
2.派生类构造函数要点:
基类对象首先被创建,派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数,派生类构造函数应初始化派生类新增的数据成员。
例如:派生类为RatedPlayer,基类为TableTennisPlayer,其中派生类私有成员为rating(unsigned int),基类成员为firstname(char),lastname(char),hasTable(bool)。
则派生类构造函数可以是:
RatedPlayer::RatedPlayer(unsigned int r,const char*fn,const char *ln,bool ht):TableTennisPlayer(fn,ln,ht)
{
rating =r;
}
也可以是:
RatedPlayer::RatedPlayer(unsigned int r,const TableTennisPlayer &tp):TableTennisPlayer(tp),rating(r)
{
} //也可以在初始化列表中只给基类传tp,在函数中给rating赋值
如果没有在派生类的初始化列表中指明要使用的基类构造函数,派生类将调用基类的默认构造函数