class TableTennisPlayer{
private:
string firstname;
string lastname;
bool hasTable;
publc:
TableTennisPlayer(const string & fn="none",const string & ln="none",bool ht =false);
void name() const;
bool hasTable(return hasTable);
void ResetTable(bool v){hasTable=v};
}
class RatedPlayer:public TableTennisPlayer{
private: unsigned int rating;
public:
RatedPlayer(unsigned int r=0,const string &fn="none",const string & ln="none",bool ht=false);
RatedPlayer(unsigned int r,const TableTennisPlayer &tp);
unsigned int Rating()const{return rating;}
void ResetRating(unsigned int r){rating =r;}
}
}
1.使用派生类调用基类的拷贝构造函数
RatedPlayer olaf1(1840,"Olaf","Loaf",true);
TableTennisPlayer olaf2(olaf1);
表面上调用:
TableTennisPlayer(const RatedPlayer &);
实际调用,基类的拷贝构造函数:
TableTennisPlayer(const TableTennisPlayer &);
2.隐式调用基类的=重载
RatedPlayer olaf1(1840,"Olaf","Loaf",true);
TableTennisPlayer winner;
winner=olaf1;
隐式调用
TableTennisPlayer & operator=(const TableTennisPlayer &)const;
3.上述调用只完成基类数据成员的拷贝和赋值,派生类的数据成员并没有被赋值。
4.Is a和Has a
午饭有一个香蕉 午饭中包含香蕉这个对象
香蕉是一种水果 香蕉是水果的派生类
标签:RatedPlayer,const,string,派生,继承,unsigned,int,TableTennisPlayer
From: https://www.cnblogs.com/zhongta/p/18350795