用C++基类person类增加虚函数输出用户姓名,teacher类和 student类需要实现虚函数,通过person指针去操作teacher类和 student类,输出信息;修改研究生类多重继承teacher类和 student类,通过point指针指向研究生类,输出姓名。
时间: 2024-02-20 08:57:53 浏览: 63
好的,我来回答你的问题。
首先,我们定义一个基类`Person`,其中包含一个`virtual`函数`showName()`用于输出姓名:
```c++
class Person {
public:
virtual void showName() {
std::cout << "I am a person." << std::endl;
}
};
```
然后,我们定义一个`Teacher`类和一个`Student`类,都继承自`Person`类,并实现`showName()`函数:
```c++
class Teacher : public Person {
public:
void showName() override {
std::cout << "I am a teacher." << std::endl;
}
};
class Student : public Person {
public:
void showName() override {
std::cout << "I am a student." << std::endl;
}
};
```
接着,我们可以使用`Person`指针去操作`Teacher`类和`Student`类,并输出信息:
```c++
Person* p1 = new Teacher();
p1->showName(); // 输出 "I am a teacher."
Person* p2 = new Student();
p2->showName(); // 输出 "I am a student."
```
最后,我们修改`GraduateStudent`类,让其多重继承`Teacher`类和`Student`类,并输出姓名:
```c++
class GraduateStudent : public Teacher, public Student {
public:
void showName() override {
std::cout << "I am a graduate student." << std::endl;
}
};
```
我们可以使用`GraduateStudent`指针去输出姓名:
```c++
GraduateStudent* p3 = new GraduateStudent();
p3->showName(); // 输出 "I am a graduate student."
```
注意,因为`GraduateStudent`类同时继承自`Teacher`类和`Student`类,所以需要在调用`showName()`函数时指定具体的继承类,例如:
```c++
p3->Teacher::showName(); // 输出 "I am a teacher."
p3->Student::showName(); // 输出 "I am a student."
```
阅读全文