用C++写这个题目某公司的雇员分为以下若干类: 抽象类Employee:这是所有员工总的父类; 数据成员:员工的姓名,员工的生日月份。 成员函数:string getname(),获取员工姓名;float getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公 司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。 数据成员:月薪 写一个程序,把若干各种类型的员工放在一个 Employee 数组里,写一个函数,打印 出某月每个员工的工资数额。
时间: 2024-03-23 20:37:17 浏览: 65
好的,这个题目我已经回答过了,你可以参考我的上一个回答。以下是示例代码,你可以根据自己的需要进行修改和完善。
```c++
#include <iostream>
#include <string>
using namespace std;
// 抽象类 Employee
class Employee {
public:
Employee(string name, int birthMonth) {
this->name = name;
this->birthMonth = birthMonth;
}
virtual float getSalary(int month) = 0; // 纯虚函数
string getName() {
return name;
}
protected:
string name;
int birthMonth;
};
// 派生类 SalariedEmployee
class SalariedEmployee : public Employee {
public:
SalariedEmployee(string name, int birthMonth, float monthlySalary) : Employee(name, birthMonth) {
this->monthlySalary = monthlySalary;
}
float getSalary(int month) {
float salary = monthlySalary;
if (month == birthMonth) {
salary += 100;
}
return salary;
}
private:
float monthlySalary;
};
// 打印某月各个员工的工资
void printSalary(Employee** employees, int n, int month) {
for (int i = 0; i < n; i++) {
cout << employees[i]->getName() << ": " << employees[i]->getSalary(month) << endl;
}
}
int main() {
// 创建员工数组
const int n = 3;
Employee* employees[n];
employees[0] = new SalariedEmployee("张三", 6, 5000);
employees[1] = new SalariedEmployee("李四", 8, 6000);
employees[2] = new SalariedEmployee("王五", 9, 7000);
// 打印某月各个员工的工资
int month = 9;
printSalary(employees, n, month);
// 释放内存
for (int i = 0; i < n; i++) {
delete employees[i];
}
return 0;
}
```
阅读全文