c++多重继承问题,很简单的。
classA{virtualintf();};classB{virtualvoidf();};如果有一个类C同时集成了A和B,那他继承的是那个f()啊?我感觉这样不对啊,...
class A
{
virtual int f();
};
class B
{
virtual void f();
};
如果有一个类C同时集成了A和B,那他继承的是那个f()啊?
我感觉这样不对啊,c++只能重载是参数不相同的函数吧? 展开
{
virtual int f();
};
class B
{
virtual void f();
};
如果有一个类C同时集成了A和B,那他继承的是那个f()啊?
我感觉这样不对啊,c++只能重载是参数不相同的函数吧? 展开
3个回答
展开全部
有这样的定义
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也可以用
};
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也可以用
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询