基本クラスの別のメソッドによって使用される基本クラスのメソッドをオーバーライドしようとしています。ただし、派生クラスが基本クラスの using-method を呼び出すと、派生した 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()
printを実行しています。0
Base
getLeft()
Derived のインスタンスから呼び出されたときに呼び出されるDerived::getLeft()
ように、このコードを変更するにはどうすればよいですか?