ü定义一个基类person,保护数据成员:name(姓名),sex(性别),age(年龄),构造函数。 ü派生出教师Teacher类,保护数据成员:title(职称),构造函数。 ü派生出Student类,保护数据成员:score(成绩),构造函数。 ü用多继承的方式定义一个在职研究生(Graduate)派生类私有数据成员wage(工资),构造函数和公有成员函数show()。
时间: 2024-01-09 11:04:45 浏览: 11
好的,这是一个面向对象编程的问题,下面是代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 定义基类Person
class Person
{
protected:
string name; // 姓名
string sex; // 性别
int age; // 年龄
public:
Person(string n, string s, int a):name(n), sex(s), age(a) {}
};
// 定义教师类Teacher,继承自Person
class Teacher : public Person
{
protected:
string title; // 职称
public:
Teacher(string n, string s, int a, string t):Person(n, s, a), title(t) {}
};
// 定义学生类Student,继承自Person
class Student : public Person
{
protected:
int score; // 成绩
public:
Student(string n, string s, int a, int sc):Person(n, s, a), score(sc) {}
};
// 定义在职研究生类Graduate,多继承自Teacher和Student
class Graduate : private Teacher, private Student
{
private:
double wage; // 工资
public:
Graduate(string n, string s, int a, string t, int sc, double w)
:Person(n, s, a), Teacher(n, s, a, t), Student(n, s, a, sc), wage(w) {}
void show()
{
cout << "姓名:" << name << endl;
cout << "性别:" << sex << endl;
cout << "年龄:" << age << endl;
cout << "职称:" << title << endl;
cout << "成绩:" << score << endl;
cout << "工资:" << wage << endl;
}
};
int main()
{
// 测试
Graduate g("张三", "男", 25, "教授", 90, 10000.0);
g.show();
return 0;
}
```
这里用到了多继承的方式,Graduate类同时继承了Teacher和Student类,这样Graduate类就可以同时拥有教师和学生的属性。在Graduate类中,wage是私有成员,只有本类可以访问,但是通过公有成员函数show()可以输出wage的值。