Я создаю родительский класс, который вызывает его собственный виртуальный член. Но этот виртуальный член переопределяется дочерним классом.C++ вызов дочернего виртуального члена из родительского виртуального члена
class Parent {
public:
void doSomething() {
doVirtual();
}
protected:
virtual void doVirtual() {}
};
class Child : public Parent {
protected:
virtual void doVirtual() {}
};
Parent *c = new Child();
c->doSomething();
И скомпилировать его с Visual Studio 2008, на мой вопрос: Когда я выполнить код из IDE (начать отладку), он вызывает метод ребенка, но когда я запускаю исполняемый файл напрямую, он вызывает родительский метод. Я здесь что-то не так?
VS 2010 вызывает дочерний метод (doVirtual) только в обоих режимах (как ожидалось) – Chubsdad
Я получил тот же результат, что и chubsdad, VS 2010 вызывает дочерний метод только в обоих режимах. – muddybruin
ОК, спасибо всем, я попробую против 2010 года. Я подозреваю, что ошибки где-то скрываются в моем коде. – flamemyst