考虑C++类之间的多级继承。考虑:
struct A {
void Dummy1() { }
};
struct B : A {
void Dummy1() { }
};
struct C : B {
void Dummy() {
Dummy1();
}
void Dummy1() { }
};
struct D : C {
void Dummy1() { }
};
struct E : D {
void Dummy1() { }
};
鉴于:
E e;
e.Dummy();
我想知道哪个Dummy1将被调用。在
C
类中定义的一个还是在E
类中定义的一个?另外,我对在多级继承中进行的函数调用感到非常困惑,例如在虚函数等情况下。有人可以建议一本书或一篇文章来帮助我理解这一点。我在Google上搜索了很多,但找不到任何有用的信息。
提前致谢。
最佳答案
给定您的代码,它将调用C
中定义的代码。
如果希望它调用E
中定义的那个,则必须使Dummy1
成为virtual
函数。
关于c++ - C++多级继承函数调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29812805/