派生类中虚函数的使用
Use of virtual functions in derived classes
在下面的 class 中,我知道输出将是:
Func A 游戏
Func B 游戏
Func A 游戏
Func B 游戏
要解决这个问题,可以将游戏 functionB() 设为虚拟,但我只是想知道为什么 rpg->functionB() 会在游戏 class 中调用该方法,而不是在 RPG class?有人可以帮忙吗?
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
声明的任何函数。只有虚函数在运行时被解析;非虚函数根据静态类型在编译时解析。
在下面的 class 中,我知道输出将是:
Func A 游戏
Func B 游戏
Func A 游戏
Func B 游戏
要解决这个问题,可以将游戏 functionB() 设为虚拟,但我只是想知道为什么 rpg->functionB() 会在游戏 class 中调用该方法,而不是在 RPG class?有人可以帮忙吗?
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
声明的任何函数。只有虚函数在运行时被解析;非虚函数根据静态类型在编译时解析。