程实现基类Employee,派生类Manager和HourlyWorker。 Employee有数据成员name和ID; Manager有数据成员sal,代表经理的月工资; HourlyWorker有wage,hours和sal,分别代表钟点工的每小时工资数、月工作时数和月工资总数; 并创建成员函数salllay()求出钟点工的月工资总数=每小时工资数*月工作时数。 定义的所有类中都必须包含构造函数,最终输出所有数据的值。程序中包含构造函数,不许使用protected类型的数据,以C++形式输出
时间: 2024-02-09 20:09:04 浏览: 61
C++基类指针和派生类指针之间的转换方法讲解
好的,下面是基类Employee和派生类Manager和HourlyWorker的定义和实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Employee {
public:
Employee(string name, int id) : name(name), id(id) {}
virtual void sallary() = 0; // 纯虚函数,需要子类实现
private:
string name;
int id;
};
class Manager : public Employee {
public:
Manager(string name, int id, double sal) : Employee(name, id), sal(sal) {}
void sallary() {
cout << "Manager " << name << " (ID: " << id << ")'s monthly sallary: " << sal << endl;
}
private:
double sal;
};
class HourlyWorker : public Employee {
public:
HourlyWorker(string name, int id, double wage, double hours) : Employee(name, id), wage(wage), hours(hours) {
sal = wage * hours;
}
void sallary() {
cout << "Hourly worker " << name << " (ID: " << id << ")'s monthly sallary: " << sal << endl;
}
private:
string name;
int id;
double wage;
double hours;
double sal;
};
int main() {
Manager m("Tom", 1, 10000);
HourlyWorker h("Jerry", 2, 100, 160);
m.sallary();
h.sallary();
return 0;
}
```
上面的代码中,基类Employee定义了两个数据成员name和id,并声明了一个纯虚函数sallary();派生类Manager和HourlyWorker分别添加了数据成员sal、wage和hours,并实现了sallary()函数。其中HourlyWorker的sallary()函数计算了月工资总数。在main函数中,我们创建了一个Manager对象和一个HourlyWorker对象,并调用它们的sallary()函数输出月工资总数。
阅读全文