先建立一个职工类Employee,包含数据成员name(姓名),ID(编号),以他为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成员salary(月工资),在技术人员类中增加数据成员wage(代表每小时的工资)和hours(工作时长)。在定义类时,所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的函数,以及虚函数计算职工的工资、输出职工的信息。(用c++写并标注注释)
时间: 2024-03-02 13:51:47 浏览: 57
好的,我来为您解答这个问题。
```cpp
#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 ~Employee() {}
virtual double getSalary() = 0;
virtual void displayInfo() = 0;
string getName() { return name; }
int getID() { return ID; }
};
class Manager : public Employee {
private:
double salary;
public:
Manager(string n, int id, double s) : Employee(n, id), salary(s) {}
double getSalary() { return salary; }
void displayInfo() {
cout << "Name: " << name << endl;
cout << "ID: " << ID << endl;
cout << "Salary: " << salary << endl;
}
};
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 getSalary() { return wage * hours; }
void displayInfo() {
cout << "Name: " << name << endl;
cout << "ID: " << ID << endl;
cout << "Wage: " << wage << endl;
cout << "Hours: " << hours << endl;
}
};
int main() {
Manager m("John", 1, 5000);
Technician t("Mary", 2, 50, 80);
cout << "Manager's info:" << endl;
m.displayInfo();
cout << "Manager's salary: " << m.getSalary() << endl;
cout << "Technician's info:" << endl;
t.displayInfo();
cout << "Technician's salary: " << t.getSalary() << endl;
return 0;
}
```
在上面的代码中,我们先定义了一个职工类 `Employee`,它包含了姓 名和编号两个数据成员,并且定义了一个纯虚函数 `getSalary()`,表示计算职工的工资,以及一个纯虚函数 `displayInfo()`,表示输出职工的信息。同时,我们还定义了两个派生类 `Manager` 和 `Technician`,它们分别增加了月工资和每小时工资、工作时长两个数据成员,并且分别实现了 `getSalary()` 和 `displayInfo()` 函数。
在 `main()` 函数中,我们创建了一个 `Manager` 对象和一个 `Technician` 对象,分别输出了它们的信息,并且计算了它们的工资。
以上就是这个问题的解答,希望能对您有所帮助。
阅读全文