1、增加田径运动员TrackfieldPlayer类,TrackfieldPlayer从 P1ayer类继承,增加: (1)数据成员type表示运动员类型; (2) 虚函数display显示运动员信息。 (3)在程序中增加函数,将指针和引用作为形参,用函数调用的方式验证多态性。
时间: 2024-12-12 19:17:56 浏览: 9
在C++中,我们可以创建一个名为`TrackfieldPlayer`的类,它从`Player`类派生,并实现你提到的要求。首先,我们定义`Player`类的基本结构:
```cpp
class Player {
public:
virtual ~Player() = default; // 默认析构函数
// 原始的信息展示函数
virtual void display() const {
std::cout << "Player information not specified." << std::endl;
}
};
```
然后,我们为`TrackfieldPlayer`类添加特定的数据成员`type`和虚函数`display`:
```cpp
class TrackfieldPlayer : public Player {
private:
std::string type;
public:
TrackfieldPlayer(const std::string& t) : type(t) {}
// 显示运动员类型信息
virtual void display() const override {
std::cout << "Trackfield player type: " << type << std::endl;
}
};
```
现在,为了验证多态性,我们可以在主函数中定义一个接收`Player`指针和引用的通用函数,然后根据不同类型的对象实例化调用它们的`display`方法:
```cpp
#include <iostream>
void showAthleteInfo(Player* athlete) {
athlete->display();
}
void showAthleteInfo(Player& athlete) {
athlete.display();
}
int main() {
// 创建并初始化TrackfieldPlayer对象
TrackfieldPlayer trackRunner("Runner");
// 使用指针
Player* ptrAthlete = &trackRunner;
showAthleteInfo(ptrAthlete);
// 使用引用
Player trackSwimmer("Swimmer");
showAthleteInfo(trackSwimmer);
return 0;
}
```
在这个例子中,无论传递的是`TrackfieldPlayer`的指针还是引用,`showAthleteInfo`函数都能正确地调用各自对象的`display`方法,体现了多态性。
阅读全文