当一个类从多个抽象类继承,当其中两个或多个抽象类具有相同名称,返回类型和参数的函数时会发生什么?
假设这里的所有功能都是虚拟的
由于
C类同时从A和B继承而且A& B有虚拟void func(int h);
答案 0 :(得分:2)
如果这是你的意思,
#include <iostream.h>
class A
{
public:
virtual void a_show()=0;
virtual void show()
{
cout<<"A";
}
};
class B
{
public:
virtual void b_show()=0;
virtual void show()
{
cout<<"B";
}
};
class C : public A, public B
{
virtual void a_show()
{}
virtual void b_show()
{}
};
void main()
{
C s;
s.show();
}
代码在VC ++中出错,如
error C2385: 'C::show' is ambiguous
你需要声明这样的节目:
#include <iostream.h>
class A
{
public:
virtual void a_show()=0;
virtual void show()
{
cout<<"A";
}
};
class B
{
public:
virtual void b_show()=0;
virtual void show()
{
cout<<"B";
}
};
class C : public A, public B
{
public:
virtual void a_show()
{}
virtual void b_show()
{}
void show()
{
cout<<"C";
}
};
void main()
{
C s;
s.show();
}
这肯定会给C
答案 1 :(得分:0)
C ++也允许选择继承的虚拟成员函数(IVMF),因此您不需要覆盖IVMF。借用mihsathe的例子,我们可以做到以下几点:
class C : public A, public B { public: virtual void a_show() { } virtual void b_show() { } using B::show; // using A:show; // If you want to use show() from A };