C ++重写方法不起作用 [英] C++ Overriding method not working
本文介绍了C ++重写方法不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我期待我的游戏打印出来,但我得到Base
只有在课堂内部使用方法时才会发生这种情况。
I am expecting "My Game" to print out but I am getting "Base" This only happens when using methods internally inside the class.
#include <iostream>
namespace Monster { class App {
public:
App(){}
~App(){}
void run(){
this->speak();
}
void speak(){
std::cout << "Base" << "\n";
};
};}; // class / namespace
class MyGame : public Monster::App {
public:
MyGame(){}
~MyGame(){}
void speak(){
std::cout << "My Game" << "\n";
};
};
int main(){
MyGame *child = new MyGame;
child->run();
return 0;
}
推荐答案
在C ++中你需要专门声明一个函数 virtual
:
In C++ you need to specifically declare a function to be virtual
:
class BaseClass {
virtual void speak () {
...
}
};
这篇关于C ++重写方法不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文