1)某学校对助工同学的津贴计算规定如下:固定津贴+助工补贴*助工天数。研究生的固定津贴为1000元,每天的助工补贴是60元。本科生的固定津贴为600元,每天的助工补贴是50元(固定津贴可用参数缺省值处理)。 (2)定义学生抽象类Student,派生不同助工学生类(Graduate、UnderGraduate),编写程序求若干个助工学生的月津贴。 (3)其中学生类包含3个保护类数据成员:string name; int days; float subsidy; 它们分别是“姓名”、“每
时间: 2024-04-01 14:30:47 浏览: 48
电力设备与新能源行业研究周报:国网发布泛在建设大纲,中美协议助工控回暖.pdf
天助工天数”和“每天助工补贴”。先定义一个抽象类Student,然后派生出Graduate和UnderGraduate两个子类,分别代表研究生和本科生。这两个子类分别实现计算月津贴的方法,具体如下:
```c++
#include <iostream>
#include <string>
using namespace std;
// 抽象类Student
class Student {
protected:
string name; // 学生姓名
int days; // 每天助工天数
float subsidy; // 每天助工补贴
public:
Student(string _name, int _days, float _subsidy) : name(_name), days(_days), subsidy(_subsidy) {}
virtual float getMonthlyAllowance() = 0; // 纯虚函数,计算月津贴
};
// Graduate类,代表研究生
class Graduate : public Student {
public:
Graduate(string _name, int _days) : Student(_name, _days, 60.0) {}
float getMonthlyAllowance() {
return 1000.0 + subsidy * days;
}
};
// UnderGraduate类,代表本科生
class UnderGraduate : public Student {
public:
UnderGraduate(string _name, int _days) : Student(_name, _days, 50.0) {}
float getMonthlyAllowance() {
return 600.0 + subsidy * days;
}
};
int main() {
// 测试
Graduate g("张三", 20);
cout << g.getMonthlyAllowance() << endl; // 输出:2200
UnderGraduate u("李四", 25);
cout << u.getMonthlyAllowance() << endl; // 输出:1750
return 0;
}
```
在上面的代码中,首先定义了一个抽象类Student,其中包含了3个保护类数据成员:name、days和subsidy。它们分别表示学生的姓名、每天助工天数和每天助工补贴。在构造函数中初始化这些数据成员,其中subsidy的值在Graduate和UnderGraduate两个子类中不同,因此在构造函数中缺省值为60.0。同时,定义了一个纯虚函数getMonthlyAllowance(),用于计算月津贴,这个函数在子类中被实现。
接着,定义了两个子类Graduate和UnderGraduate,分别代表研究生和本科生。在构造函数中,调用了父类的构造函数来初始化name、days和subsidy。在getMonthlyAllowance()函数中,根据题目要求,分别计算月津贴的值并返回。最后在main()函数中,对两个子类进行了测试。
阅读全文