我创建了一个父类,它调用它自己的虚拟成员。但是这个虚拟成员被子类覆盖。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 2010-08-17 04:58:13
我得到了与chubsdad相同的结果,VS 2010只在两种模式下调用子方法。 – muddybruin 2010-08-17 05:01:12
好的,谢谢大家,我会试试vs 2010。我怀疑bug存在于我的代码中。 – flamemyst 2010-08-17 05:13:08