利用c++实现4)基类person类增加虚函数输出用户姓名,teacher类和 student类需要实现虚函数,通过person指针去操作teacher类和 student类,输出信息;修改研究生类多重继承teacher类和 student类,通过point指针指向研究生类,输出姓名
时间: 2024-03-10 19:46:01 浏览: 57
基类对象-C++程序设计(谭浩强完整版)
好的,这是一个面向对象编程的问题,需要使用到C++的继承和虚函数的特性。
首先,我们需要定义一个基类 `Person`,并在其中添加一个虚函数 `virtual void printName() const`,用于输出用户的姓名。代码如下:
```c++
class Person {
public:
virtual void printName() const {
cout << "Unknown person" << endl;
}
};
```
接着,我们需要定义两个派生类 `Teacher` 和 `Student`,并分别实现虚函数 `printName()`。代码如下:
```c++
class Teacher : public Person {
public:
virtual void printName() const {
cout << "Teacher" << endl;
}
};
class Student : public Person {
public:
virtual void printName() const {
cout << "Student" << endl;
}
};
```
然后,我们可以使用 `Person` 指针去操作 `Teacher` 和 `Student` 类的实例,并调用它们的 `printName()` 函数。代码如下:
```c++
int main() {
Person* p1 = new Teacher();
Person* p2 = new Student();
p1->printName(); // 输出 "Teacher"
p2->printName(); // 输出 "Student"
delete p1;
delete p2;
return 0;
}
```
最后,我们需要修改研究生类 `Graduate`,让它多重继承 `Teacher` 和 `Student` 类,并实现 `printName()` 函数。代码如下:
```c++
class Graduate : public Teacher, public Student {
public:
virtual void printName() const {
cout << "Graduate" << endl;
}
};
```
接着,我们可以使用 `Graduate*` 指针去操作 `Graduate` 类的实例,并调用它的 `printName()` 函数。代码如下:
```c++
int main() {
Graduate* p = new Graduate();
p->printName(); // 输出 "Graduate"
delete p;
return 0;
}
```
至此,我们就完成了这个问题的实现。
阅读全文