编程实现基类Employee,派生类Manager和HourlyWorker。 Employee有数据成员name和ID; Manager有数据成员sal,代表经理的月工资; HourlyWorker有wage,hours和sal,分别代表钟点工的每小时工资数、月工作时数和月工资总数; 并创建成员函数salllay()求出钟点工的月工资总数=每小时工资数*月工作时数。 定义的所有类中都必须包含构造函数,最终输出所有数据的值。以·C++形式输出
时间: 2024-02-09 10:08:49 浏览: 100
C++基类指针和派生类指针之间的转换方法讲解
以下是基类Employee和派生类Manager、HourlyWorker的代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Employee {
protected:
string name;
int ID;
public:
Employee(string n, int id) : name(n), ID(id) {}
};
class Manager : public Employee {
private:
int sal;
public:
Manager(string n, int id, int s) : Employee(n, id), sal(s) {}
int getSalary() {
return sal;
}
};
class HourlyWorker : public Employee {
private:
int wage;
int hours;
int sal;
public:
HourlyWorker(string n, int id, int w, int h) : Employee(n, id), wage(w), hours(h) {
sal = wage * hours;
}
int getSalary() {
return sal;
}
};
int main() {
Manager m("Tom", 1001, 5000);
HourlyWorker h("Jerry", 1002, 50, 160);
cout << "Manager: " << m.name << ", ID: " << m.ID << ", Salary: " << m.getSalary() << endl;
cout << "HourlyWorker: " << h.name << ", ID: " << h.ID << ", Salary: " << h.getSalary() << endl;
return 0;
}
```
在上述代码中,基类Employee有数据成员name和ID,派生类Manager和HourlyWorker都继承自Employee。Manager有数据成员sal,代表经理的月工资;HourlyWorker有wage、hours和sal,分别代表钟点工的每小时工资数、月工作时数和月工资总数。HourlyWorker的构造函数中,计算出月工资总数并存储在sal中。派生类Manager和HourlyWorker都定义了成员函数getSalary(),用于获取其月工资总数。最终在主函数中创建Manager和HourlyWorker的实例,并输出其姓名、ID和月工资总数。
阅读全文