首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类继承的成员初始化列表如何理解

2012-05-09 
类继承的成员初始化列表怎么理解C/C++ codeRatedPlayer::RatedPlayer(unsigned int r, const char * fn, c

类继承的成员初始化列表怎么理解

C/C++ code
RatedPlayer::RatedPlayer(unsigned int r, const char * fn, const char * ln, bool ht):TableTennisPlayer(){    rating = r;}RatedPlayer::RatedPlayer(unsigned int r, const TableTennisPlayer & tp):TableTennisPlayer(tp){    rating = r;}//const TableTennisPlayer & tp该表达式的对象还没有创建,怎么能引用呢?该怎么理解 //第二个构造函数该传什么参数才调用,还是这两个构造函数等价的?  


[解决办法]
这两个构造函数不等价。
第一个构造函数在执行时,首先调用基类的构造函数TableTennisPlayer();
第二个构造函数在执行时,会传进去一个已经存在的tp对象(const TableTennisPlayer & tp),并且对该对象调用TableTennisPlayer(tp)函数。
[解决办法]
第2个构造函数是在已经有1个基类的对象,然后通过这个对象再加上派生类对象的私有数据构造1个派生类的对象
举例:A是基类, B是A的派生类
A item1 = A(参数a); //根据参数表创造一个A类对象item1
B item2 = B(item1,另外一些B特有的参数b); //根据对象item1和其他参数创建对象item2
也可以用下面的方法创建item2
B item2 = B(参数a,参数b)

这2种方法对应B的两个不同构造函数

热点排行