我有一个这样的课:
class A
{
public:
virtual void foo() { bar() }
protected:
virtual void bar() { /* do stuff */ }
}
Run Code Online (Sandbox Code Playgroud)
现在我想要一个覆盖foo和bar的派生类B. 所以我写了以下内容:
class B : public A
{
public:
virtual void foo() { A::foo(); /* then other stuff */ }
protected:
virtual void bar() { /* do different stuff */ }
}
Run Code Online (Sandbox Code Playgroud)
一切都编译但是当我调用B :: foo时,我希望B :: bar得到(最终)调用.相反,我得到A :: bar.我究竟做错了什么?