【发布时间】:2012-05-15 15:59:35
【问题描述】:
我正在尝试覆盖基类中另一个方法使用的基类方法;但是,当派生类调用基类的 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() 打印0,表明使用了Base 的getLeft() 方法,而不是派生对象的方法。
如何更改此代码,以便在 从 Derived 实例调用时调用 Derived::getLeft()?
【问题讨论】:
-
对不起,我没有时间。这个项目明天到期。不过,感谢您的有益建议。
-
对于投反对票的人,这个问题有什么特别错误的吗?我应该澄清一些事情吗?我尝试进行研究,但由于我不知道我试图描述的现象的术语,我无法找到任何相关的结果。
-
我对这个问题投了反对票,但直到你告诉我你不愿意读一本书来学习 C++,我才这样做。
-
明白了。我担心反对票可能在某种程度上是相关的。很高兴知道这只是个人的。谢谢你的诚实。
-
It's not personal。你不能通过阅读在线教程来很好地学习 C++。试图走捷径和吃勺子对你的同事、你的雇主、你的老师或你自己没有任何好处。
标签: c++ inheritance polymorphism