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

Func游戏

功能B游戏

Func游戏

功能B游戏

并修复它是使Game 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;
}

最佳答案

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

关于c++ - 在派生类中使用虚函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27782704/

10-15 08:51