从父级调用子虚函数

Ted*_*ddy -4 c++

请帮帮我.我真的不擅长多态性.我必须从另一个继承的类.

编辑:对不起,完全是我的错误.即使我已经过了大约2个小时才能找到问题.有兴趣的人(感谢所有帮助)

if (type.compare("TEST1") == 0) result = new Test(ID, database);
if (type.compare("TEST2") == 0) result = new Test(ID, database);
if (type.compare("TOR") == 0) result = new Tor(ID, database);
Run Code Online (Sandbox Code Playgroud)

"== 0"完全失踪了.

class A {
public:
    void go() {do();}
    virtual void do() {printf('A');}
}

class B:public A {
    virtual void do() {printf('B');}
}

int main {
    A* obj = new B();
    obj->go();
}
Run Code Online (Sandbox Code Playgroud)

结果是'A'而不是'B'.我怎样设法让它成为'B'?

谢谢.

Sha*_*our 5

代码不按原样编译,但经过多次修改后,我似乎得到了预期的结果:

#include <cstdio>

class A {
public:
    void go() 
    {
       do1();
       };
    virtual void do1() {printf("a");}
};

class B:public A {
    virtual void do1() {printf("b");}
};

int main() {
    A* obj = new B;
    obj->go();
}
Run Code Online (Sandbox Code Playgroud)

首先do是一个保留字,main未被正确宣布并printf采取char *:

int printf(const char *format, ...);
Run Code Online (Sandbox Code Playgroud)

所以你尝试从做一个无效的转换char来char *.

  • 任何可能怀疑的人的[现场演示](http://ideone.com/zsZXPI). (3认同)