2、先建立一个职工类Employee,包含数据成员name(姓名),ID(编号),以他为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成员salary(月工资),在技术人员类中增加数据成员wage(代表每小时的工资)和hours(工作时长)。在定义类时,所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的函数,以及虚函数计算职工的工资、输出职工的信息。
时间: 2024-03-02 07:52:02 浏览: 101
好的,我明白了你的问题。这是一个关于员工类的继承和多态的问题。下面是代码实现,希望能够帮到你:
```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){} // 构造函数
virtual double pay() = 0; // 计算工资的虚函数
virtual void display() = 0; // 输出职工信息的虚函数
virtual ~Employee(){} // 析构函数
};
class Manager:public Employee{
private:
double salary; // 月工资
public:
Manager(string n, int id, double s):Employee(n, id),salary(s){} // 构造函数
double pay(){ // 计算工资
return salary;
}
void display(){ // 输出职工信息
cout << "姓名:" << name << " 编号:" << ID << " 月工资:" << salary << endl;
}
~Manager(){} // 析构函数
};
class Technician:public Employee{
private:
double wage; // 每小时的工资
double hours; // 工作时长
public:
Technician(string n, int id, double w, double h):Employee(n, id),wage(w),hours(h){} // 构造函数
double pay(){ // 计算工资
return wage * hours;
}
void display(){ // 输出职工信息
cout << "姓名:" << name << " 编号:" << ID << " 工资:" << pay() << endl;
}
~Technician(){} // 析构函数
};
int main(){
Manager m("张三", 1001, 8000.0); // 创建经理对象
m.display(); // 输出经理信息
Technician t("李四", 1002, 50.0, 160.0); // 创建技术人员对象
t.display(); // 输出技术人员信息
return 0;
}
```
在这个代码中,我们先定义了一个基类 `Employee`,包含姓名和编号两个数据成员,以及计算工资和输出职工信息的虚函数。然后我们派生出了经理类 `Manager` 和技术人员类 `Technician`,在经理类中增加了月工资这个数据成员,在技术人员类中增加了每小时工资和工作时长这两个数据成员。我们在派生类中重写了基类的虚函数,实现了不同职工的不同计算工资和输出信息的方法。最后在 `main` 函数中创建了经理和技术人员对象,并调用它们的 `display` 函数输出职工信息。
希望这个代码能够帮到你!
阅读全文