为什么翻译成虚函数?
因为这个函数虽然在那里,但用户实际调用的时候,就可能调用的不是它而是他的子类的函数,就好象不存在似的
经典多态使用代码
#include <iostream>
#include <vector>
using namespace std;
class Layer {
public:
virtual void run() {
std::cout << "layer" <<std::endl;
};
};
class ConvLayer: public Layer {
public:
void run() override{
std::cout << "conv layer" <<std::endl;
};
};
class LstmLayer: public Layer {
public:
void run() override{
std::cout << "lstm layer" <<std::endl;
};
};
int main()
{
Layer *convLayer = new ConvLayer;
Layer *lstmLayer = new LstmLayer;
std::vector<Layer *> layers;
layers.push_back(convLayer);
layers.push_back(lstmLayer);
for (auto layer: layers) {
layer->run();
}
return 0;
}
自我练习题:
游戏里基类是object,角色有法师,精灵,实现攻击