代码:
#include <iostream>
using namespace std;
class TableTennisPlayer {
private:
string firstname;
string lastname;
bool hasTable;
public:
TableTennisPlayer() {};
TableTennisPlayer(string &fn,string & ln,bool ht):
firstname(fn),lastname(ln),hasTable(ht){} //成员初始化列表
};
class RatedPlayer :public TableTennisPlayer { //公有继承
private:
int rating;
public:
RatedPlayer(int r, string& fn, string& ln, bool ht) :
TableTennisPlayer(fn, ln, ht) {
rating = r;
}
};
分析:
(1)通过继承,派生类对象存储了基类的数据成员,并且可以使用基类的方法。
(2)基类的私有部分也将成为派生类的一部分,但是只能通过基类的公有和保护方法访问。
(3)派生类的构造函数必须为新增成员和继承的成员提供数据。
(4)必须使用基类的公有方法来访问私有的基类成员,也就是说,派生类构造函数必须使用基类构造函数。
(5)创建派生类对象时,程序首先创建基类对象。派生类构造函数会通过成员初始化列表将自己得到的实参传递给基类构造函数。
(6)对象过期时,释放对象的顺序与创建对象的顺序相反:首先执行派生类的析构函数,然后调用基类析构函数。