10.3.3 解决方案

    若两个基类中具有同名的数据成员或成员函数,应使用成员名限定来消除二义性,如下所示。


    void disp() { A:print(); }

    上述代码明确指明要在disp函数内调用的是从类A继承来的print函数,虽然做了修改,但是代码10.2仍无法通过编译,问题出在语句“exC.print();”上,虽然也可以通过添加作用域限定符,诸如“exC.A:print();”来解决,但是最好在类C中也定义一个同名print函数,根据需要来选择调用A:print()还是B:print(),以实现对基类同名函数的隐藏。关于成员函数重载、覆盖和隐藏的区别将在本章稍后的内容中进行介绍。