在下面的课程中,我知道输出将是:
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;
}
答案 0 :(得分:2)
我在代码中看不到任何声明virtual
的函数。仅在运行时解析虚函数;根据静态类型,在编译时解析非虚函数。