利用c++编写完整代码实现基类person类增加虚函数输出用户姓名,teacher类和 student类需要实现虚函数,通过person指针去操作teacher类和 student类,输出信息;修改研究生类多重继承teacher类和 student类,通过point指针指向研究生类,输出姓名
时间: 2024-03-10 09:46:43 浏览: 84
好的,以下是C++代码实现:
```
#include <iostream>
#include <string>
using namespace std;
// 基类 Person
class Person {
protected:
string name;
public:
Person(string n) : name(n) {}
virtual void printName() {
cout << "姓名:" << name << endl;
}
};
// 派生类 Teacher
class Teacher : public Person {
public:
Teacher(string n) : Person(n) {}
void printName() {
cout << "教师姓名:" << name << endl;
}
};
// 派生类 Student
class Student : public Person {
public:
Student(string n) : Person(n) {}
void printName() {
cout << "学生姓名:" << name << endl;
}
};
// 多重继承类 Graduate
class Graduate : public Teacher, public Student {
public:
Graduate(string n) : Teacher(n), Student(n) {}
};
int main() {
// 通过 Person 指针操作 Teacher 类和 Student 类
Person* p1 = new Teacher("张三");
Person* p2 = new Student("李四");
p1->printName();
p2->printName();
// 通过 Graduate 指针输出姓名
Graduate* g = new Graduate("王五");
g->Teacher::printName();
g->Student::printName();
return 0;
}
```
输出结果为:
```
教师姓名:张三
学生姓名:李四
教师姓名:王五
学生姓名:王五
```
以上代码实现了基类 `Person` 的虚函数 `printName()`,并在派生类 `Teacher` 和 `Student` 中重写了该函数。通过 `Person` 类型的指针 `p1` 和 `p2` 操作 `Teacher` 类型和 `Student` 类型,输出姓名。同时,通过多重继承类 `Graduate` 来实现研究生类,重写 `Person` 类的虚函数 `printName()`,并通过 `Graduate` 类型的指针 `g` 操作 `Teacher` 类型和 `Student` 类型,输出姓名。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)