读书人

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

发布时间: 2012-05-09 12:13:59 作者: rapoo

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

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的两个不同构造函数

读书人网 >C++

热点推荐