考虑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/

10-09 00:24