在派生类中使用虚函数

时间:2015-01-05 15:32:31

标签: c++ inheritance virtual

在下面的课程中,我知道输出将是:

Func A game

Func B游戏

Func A game

Func B游戏

并修复它将使游戏functionB()虚拟,但我只是想知道为什么rpg-> functionB()会调用Game类中的方法而不是RPG类?有人可以帮忙吗?

class Game  {

     public: Game() {}; 

    void functionA() {cout << "Func A game" << endl;}; 
    void functionB() {cout << "Func B game" << endl;}; 

};

class RolePlayGame: public Game { 

    public: RolePlayGame() {}; 
    void functionB(){ cout << "Func B role play" << endl; }; 

};

int main(){

    Game* g = new Game; Game* rpg = new RolePlayGame;

    g->functionA();
    g->functionB();
    rpg->functionA();
    rpg->functionB();
    delete g;
    delete rpg;

    return 0;
}

1 个答案:

答案 0 :(得分:2)

我在代码中看不到任何声明virtual的函数。仅在运行时解析虚函数;根据静态类型,在编译时解析非虚函数。