朋友们,有谁知道第17行是什么意思啊,最好能把PrintName函数和main函数也解释一下,谢谢(PS:本人是初学者)
#include <iostream>
#include <string>
using namespace std;
class Entity {
public:
virtual string GetName() {
return "Entity";
}
};
class Player : public Entity {
private:
string MyName;
public:
Player(const string &name) : MyName(name) {}
string GetName() override {
return MyName;
}
};
void PrintName(Entity *entity) {
cout << entity->GetName() << endl;
}
int main() {
Entity *e = new Entity();
PrintName(e);
Player *p = new Player("LDB");
PrintName(p);
return 0;
}
参考如下,有啥不懂评论再问
#include <iostream>
#include <string>
using namespace std;
class Entity {
public:
virtual string GetName() { // 父类定义 虚函数
return "Entity";
}
};
class Player : public Entity {
private:
string MyName;
public:
Player(const string &name) : MyName(name) {} // 带参数的构造函数, MyName(name) 初始化列表 ,MyName是成员变量,name是参数
string GetName() override { // 子类覆写父类的虚函数
return MyName;
}
};
void PrintName(Entity *entity) { // 这就是一个普通的函数,入参是 Entity类的 指针
cout << entity->GetName() << endl;
}
int main() {
Entity *e = new Entity(); // 实例化一个Entity类对象
PrintName(e); // 打印 Entity
Player *p = new Player("LDB"); // 实例化一个Player对象
PrintName(p); // 打印 LDB
return 0;
}
PrintName 是一个全局函数
这个就是考察C++动态多态,基类指针指向派生类对象,会调用派生类的重写函数实现。