我搜索过类似的问题,但没有找到。因此,如果发生重复,我很抱歉,因为这对我来说是一个常见的问题。
我的问题非常简单,请考虑以下事项:
class A {
public:
virtual void doit();
};
class B1 : public virtual A {
public:
void doit();
};
class B2 : public virtual A {
public:
void doit();
};
class C : public B1, public B2 {};
如果我这样做会发生什么:
int main(int argc, char** argv) {
C* el = new C();
el->doit(); /* WHAT HAPPENS? */
}
因为最后一个类没有覆盖该方法,所以它从父母那里获取方法......但选择了哪一个?