```cpp int main() { People* p = new People("王志刚", 23); // p原本为基类的指针 p->display(); p = new Teacher("赵宏佳", 45, 8200); // 将派生类指针幅值给p p->display(); return 0; }```
时间: 2024-03-26 14:34:36 浏览: 190
您的这段代码演示了如何使用多态(Polymorphism)实现基类指针指向派生类对象,调用派生类中的方法。
在您的代码中,`People` 类是一个基类,`Teacher` 类是 `People` 类的派生类。`People` 类中有一个虚函数 `display()`,`Teacher` 类继承了 `People` 类,并重写了其虚函数 `display()`。
在 `main()` 函数中,首先创建了一个 `People` 类型的指针 `p`,指向一个 `People` 类型的对象,然后调用 `display()` 方法。接着,将 `p` 的指向修改为 `Teacher` 类型的对象,并再次调用 `display()` 方法,此时将会调用 `Teacher` 类中重写的 `display()` 方法。
以下是您的代码的完整示例:
```cpp
#include <iostream>
using namespace std;
class People {
public:
string name;
int age;
virtual void display() {
cout << "My name is " << name << ", I am " << age << " years old." << endl;
}
People(string _name, int _age) {
name = _name;
age = _age;
}
};
class Teacher : public People {
public:
int salary;
void display() {
cout << "My name is " << name << ", I am " << age << " years old. My salary is " << salary << " RMB." << endl;
}
Teacher(string _name, int _age, int _salary) : People(_name, _age) {
salary = _salary;
}
};
int main() {
People* p = new People("王志刚", 23); // p原本为基类的指针
p->display();
p = new Teacher("赵宏佳", 45, 8200); // 将派生类指针幅值给p
p->display();
return 0;
}
```
输出结果为:
```
My name is 王志刚, I am 23 years old.
My name is 赵宏佳, I am 45 years old. My salary is 8200 RMB.
```
阅读全文