class SalariedEmployee :public Employee { private: float salary; //固定周薪 public: SalariedEmployee(string _id, string _name) :Employee(_id, _name) { } SalariedEmployee(string _id, string _name, float _salary) :Employee(_id, _name) { salary = _salary; } void setSalary(float s) { salary = s; } float getSalary() { return salary; } float caculateSalary()//实现纯虚函数,计算工资 { return salary; //周薪员工为固定薪资 } void show() //实现纯虚函数,显示雇员信息 { cout << "工号:" << id << ",姓名:" << name << ",员工类型:周薪雇员,薪资:" << fixed << setprecision(2) << caculateSalary() << ",生日福利:"; if (birthday.getMonth() == CURRENTMONTH) cout << "100,总计:" << fixed << setprecision(2) << (caculateSalary()+100) << endl; else cout << "0,总计:" << fixed << setprecision(2) << (caculateSalary() + 0) << endl; } };
时间: 2023-06-19 19:05:50 浏览: 38
这段代码是一个派生类 SalariedEmployee,继承于基类 Employee。SalariedEmployee 是一种固定周薪的员工。它有一个私有变量 salary 表示固定周薪,有两个构造函数,一个是只有工号和姓名的构造函数,一个是有工号、姓名和周薪的构造函数。它实现了基类中的纯虚函数 calculateSalary() 和 show()。
calculateSalary() 函数返回固定的周薪 salary。
show() 函数用于显示 SalariedEmployee 的信息,包括工号、姓名、员工类型、薪资、生日福利和总计工资。如果员工的生日月份与当前月份相同,则生日福利为 100 元,否则为 0 元。总计工资是周薪加上生日福利。
相关问题
class SalariedEmployee : public Employee { public: SalariedEmployee(string name, int id, Date birthDate, double salary) : Employee(name, id, birthDate), salary(salary) {} double calculatePay() override { return salary; }
这是一个C++的类定义,定义了一个名为SalariedEmployee的类,继承自Employee类。该类有四个成员变量:name,id,birthDate和salary。其中name、id和birthDate从Employee类中继承而来,而salary是该类自己定义的。构造函数中初始化了这四个成员变量,其中调用了Employee类的构造函数来初始化name、id和birthDate。该类还重写了Employee类中的calculatePay()函数,用于计算薪水,返回值为salary。
抽象类Employee:这是所有员工总的父类; 数据成员:员工的姓名,员工的生日月份。 成员函数:string getname(),获取员工姓名;float getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公 司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。 数据成员:月薪 写一个程序,把若干各种类型的员工放在一个 Employee 数组里,写一个函数,打印 出某月每个员工的工资数额。
好的,根据您提供的信息,可以按照以下方式实现这个问题:
```python
#include <iostream>
#include <string>
using namespace std;
// 定义员工类
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;
};
// 定义拿固定工资的员工类
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;
}
```
这个程序定义了一个抽象的员工类和一个拿固定工资的员工类,使用纯虚函数来实现抽象类的功能。然后通过一个数组来存储所有的员工,以及一个函数来打印某月每个员工的工资数额。程序可以根据需要进行扩展,增加新类型的员工等。