编程实现基类Employee,派生类Manager和HourlyWorker。 Employee有数据成员name和ID; Manager有数据成员sal,代表经理的月工资; HourlyWorker有wage,hours和sal,分别代表钟点工的每小时工资数、月工作时数和月工资总数; 并创建成员函数salllay()求出钟点工的月工资总数=每小时工资数*月工作时数。 定义的所有类中都必须包含构造函数,最终输出所有数据的值。程序中包含构造函数,不许使用protected类型的数据,不使用纯虚函数,以C++形式输出
时间: 2024-02-09 09:09:14 浏览: 26
好的,根据你的要求,以下是对应的C++代码实现:
```cpp
#include<iostream>
#include<string>
using namespace std;
class Employee {
public:
string name;
int ID;
Employee(string name, int ID) : name(name), ID(ID) {}
};
class Manager : public Employee {
public:
double sal;
Manager(string name, int ID, double sal) : Employee(name, ID), sal(sal) {}
};
class HourlyWorker : public Employee {
public:
double wage;
double hours;
double sal;
HourlyWorker(string name, int ID, double wage, double hours) : Employee(name, ID), wage(wage), hours(hours) {
this->sal = sallary();
}
double sallary() {
return wage * hours;
}
};
int main() {
Manager m("manager", 1, 5000);
HourlyWorker h("hourly worker", 2, 30, 160);
cout << "Manager:" << endl;
cout << "Name: " << m.name << endl;
cout << "ID: " << m.ID << endl;
cout << "Salary: " << m.sal << endl;
cout << "Hourly Worker:" << endl;
cout << "Name: " << h.name << endl;
cout << "ID: " << h.ID << endl;
cout << "Wage: " << h.wage << endl;
cout << "Hours: " << h.hours << endl;
cout << "Salary: " << h.sal << endl;
return 0;
}
```
代码中,我们先定义了基类 `Employee`,包含数据成员 `name` 和 `ID`,以及构造函数。
然后,我们定义了派生类 `Manager`,包含数据成员 `sal`,代表经理的月工资,以及构造函数。
接着,我们定义了派生类 `HourlyWorker`,包含数据成员 `wage`、`hours` 和 `sal`,分别代表钟点工的每小时工资数、月工作时数和月工资总数。我们在构造函数中调用 `sallary()` 函数求出钟点工的月工资总数。
最后,在主函数中,我们创建了一个经理对象和一个钟点工对象,并输出了它们的相关信息。
运行结果如下:
```
Manager:
Name: manager
ID: 1
Salary: 5000
Hourly Worker:
Name: hourly worker
ID: 2
Wage: 30
Hours: 160
Salary: 4800
```