某公司的雇员分为以下若干类: 抽象类Employee:这是所有员工总的父类; 数据成员:员工的姓名,员工的生日月份。 成员函数:string getname(),获取员工姓名;float getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公 司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。 数据成员:月薪 写一个程序,把若干各种类型的员工放在一个 Employee 数组里,写一个函数,打印 出某月每个员工的工资数额。
时间: 2024-03-22 18:42:26 浏览: 130
好的,根据您提供的信息,可以按照以下方式实现这个问题:
```python
#include <iostream>
#include <string>
using namespace std;
// 定义员工类
class Employee {
public:
// 构造函数
Employee(string name, int birthMonth) {
this->name = name;
this->birthMonth = birthMonth;
}
// 成员函数,获取员工姓名
string getName() {
return name;
}
// 成员函数,获取员工工资
virtual float getSalary(int month) {
return 0.0;
}
protected:
// 数据成员,员工姓名、员工生日月份
string name;
int birthMonth;
};
// 定义拿固定工资的员工类
class SalariedEmployee : public Employee {
public:
// 构造函数
SalariedEmployee(string name, int birthMonth, float salary) : Employee(name, birthMonth) {
this->salary = salary;
}
// 成员函数,获取员工工资
float getSalary(int month) {
float bonus = (month == birthMonth) ? 100.0 : 0.0;
return salary + bonus;
}
private:
// 数据成员,员工月薪
float salary;
};
// 打印某月每个员工的工资数额
void printSalary(Employee** employees, int numEmployees, int month) {
for (int i = 0; i < numEmployees; i++) {
cout << employees[i]->getName() << ": " << employees[i]->getSalary(month) << endl;
}
}
int main() {
// 测试代码
Employee* employees[3];
employees[0] = new SalariedEmployee("张三", 1, 5000);
employees[1] = new SalariedEmployee("李四", 2, 6000);
employees[2] = new SalariedEmployee("王五", 3, 7000);
printSalary(employees, 3, 2);
return 0;
}
```
这个程序定义了一个员工类和一个拿固定工资的员工类,重载了员工类中的getSalary函数。然后通过一个数组来存储所有的员工,以及一个函数来打印某月每个员工的工资数额。程序可以根据需要进行扩展,增加新类型的员工等。
阅读全文