5基类与派生类有同名成员
假设基类和派生类都有同名的成员,会导致怎么样的现象?如下是一个测试例子:
程序运行结果如下:
可以看到,基类A定义了print()函数,派生类B也定义了print()函数。那么,定义类B对象,调用print()函数的时候,调用的是类B定义的print()函数。
所以,当基类和派生类存在同名成员的时候,派生类定义的对象,调用同名成员时,优先调用的是派生类定义的同名函数。
那么,怎么样调用基类的同名函数?答案:可以通过类名来指定访问基类的成员。
如下是一个程序测试例子:
程序运行结果如下:
可以看到,在派生类B的print()函数中,通过类名A,可以访问从基类A继承过来的成员变量val和成员函数print()。
注意:不同的成员函数,只有在函数名和参数个数相同,类型相匹配的情况下才会发生同名覆盖,如果只有函数名相同,参数不同,不会发生同名覆盖,而是属于函数重载。