有这样的定义
class C:public A, public B{
};//实际上A、B中的所有成员都继承过来
假如A、B中f都声明为public,然后main函数中有
C cTest;
cTest.f();//编译不能通过,目标函数不明确
//应该这样调用
cTest.A::f(); //或者
cTest.B::f();//也正确
另外,这样继承也可以
class C:public A, public B{
public:
using A::f;//声明为A中f可见;当然类B也可以用
};
两个都有继承,不过在使用时候就会有名字冲突,编译程序不能确定到底使用哪个成员函数。一般解决方法是:
1。使用作用域运算符“::“
2。重定义有名字冲突的成员
两个都继承了下来,用::来分辩