ü定义一个基类person,保护数据成员:name(姓名),sex(性别),age(年龄),构造函数。 ü派生出教师Teacher类,保护数据成员:title(职称),构造函数。 ü派生出Student类,保护数据成员:score(成绩),构造函数。 ü用多继承的方式定义一个在职研究生(Graduate)派生类私有数据成员wage(工资),构造函数和公有成员函数show()。
时间: 2024-01-17 17:03:10 浏览: 64
好的,这是一个面向对象的编程问题,我可以帮你解答。以下是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义Person类
class Person {
protected:
string name;
char sex;
int age;
public:
Person(string _name, char _sex, int _age) {
name = _name;
sex = _sex;
age = _age;
}
};
// 定义Teacher类,继承自Person类
class Teacher : public Person {
protected:
string title;
public:
Teacher(string _name, char _sex, int _age, string _title) : Person(_name, _sex, _age) {
title = _title;
}
};
// 定义Student类,继承自Person类
class Student : public Person {
protected:
int score;
public:
Student(string _name, char _sex, int _age, int _score) : Person(_name, _sex, _age) {
score = _score;
}
};
// 定义Graduate类,继承自Teacher类和Student类
class Graduate : private Teacher, private Student {
private:
int wage;
public:
Graduate(string _name, char _sex, int _age, string _title, int _score, int _wage)
: Teacher(_name, _sex, _age, _title), Student(_name, _sex, _age, _score) {
wage = _wage;
}
void show() {
cout << "姓名:" << name << endl;
cout << "性别:" << sex << endl;
cout << "年龄:" << age << endl;
cout << "职称:" << title << endl;
cout << "成绩:" << score << endl;
cout << "工资:" << wage << endl;
}
};
// 测试代码
int main() {
Graduate g("张三", 'M', 30, "副教授", 90, 8000);
g.show();
return 0;
}
```
在上面的代码中,我们先定义了一个基类Person,其中包含了姓名、性别、年龄三个保护属性和一个构造函数。接着,我们分别派生出了教师类Teacher和学生类Student,它们都继承自Person类,但在自己的类中分别新增了职称和成绩两个保护属性,并在构造函数中调用了父类的构造函数。最后,我们用多继承的方式定义了研究生类Graduate,它同时继承自Teacher和Student类,并新增了一个私有的工资属性。在Graduate类的构造函数中,我们需要分别调用Teacher和Student类的构造函数,并将传入的参数传递给它们。在Graduate类中,我们还新增了一个公有成员函数show(),用于输出研究生的所有信息。
最后,我们在主函数中创建了一个Graduate对象g,并调用了它的show()函数来输出它的所有信息。
阅读全文