面试题答案
一键面试在 C++ 中,这种情况被称为菱形继承,会导致二义性问题。可以使用虚继承来解决。以下是代码示例:
#include <iostream>
class A {
public:
void someFunction() {
std::cout << "This is A's someFunction." << std::endl;
}
};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
class E : public D {};
int main() {
E e;
e.someFunction();
return 0;
}
在上述代码中,B
和 C
类通过 virtual public A
虚继承 A
类,这样在 E
类中就只会有一份 A
类的成员,避免了二义性问题,e.someFunction()
可以清晰且高效地调用到 A
类的 someFunction
函数。