我正在尝试覆盖基类中另一个方法使用的基类方法;但是,当派生类调用基类的 using 方法时,派生的 used-method 永远不会执行,而是调用基类的 used-method。这是一个例子:
#include <iostream>
using namespace std;
class Base {
public:
Base() {}
virtual ~Base() {}
void printLeft() { cout << this->getLeft(); }
int getLeft() { return 0; }
};
class Derived: public Base {
public:
Derived() {}
virtual ~Derived() {}
int getLeft() { return 1; }
};
int main(int argc, char *argv[]) {
Derived d = Derived();
d.printLeft();
}
运行main()
prints 0
,表明使用了Base
'sgetLeft()
方法而不是派生对象的方法。
当从 Derived 的实例Derived::getLeft()
调用时,如何更改此代码?