先导
它允许在基类中声明一个函数,并在派生类中重新定义这个函数(虚函数允许我们重写子类中的方法),从而使得在运行时能够调用到正确的函数版本。好,它能帮助你正确调用函数,也就是说出现函数冲突时,它能正确调用你需要的函数。
代码
#include <iostream>
#include<string>
class Entity
{
public:
std::string GetName()//有一个GetName,修改
{
return "Entity";
}
};
class Player:public Entity
{
private:
std::string m_Name;
public:
Player(std::string name)
: m_Name(name)
{
}
std::string GetName ()//重写一个GetName,修改
{
return m_Name;
}
};
int main()
{
Entity *e=new Entity();
std::cout << e->GetName() << std::endl;
Player *p=new Player("qiu_dsg");
std::cout << p->GetName() << std::endl;
//运行上面的代码是一切OK的,问题在下面
Entity *e1;
e1 = p;
std::cout << e1->GetName() << std::endl;
std::cin.get();
}
做出修改
virtual std::string GetName()//有一个GetName,修改:加上virtual
std::string GetName ()override//重写一个GetName,修改:加上override
结果就对了