用c++代码实现:2、先建立一个职工类 Employee.包含数据成员name(姓名),ID(编号),以他为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成员salary(月工资),在技术人员类中增加数据成员wage(代表每小时的工资)和hours(工作时长)。在定义类时,所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的函数,以及虚函数计算职工的工资、输出职工的信息。要求:简单不报错
时间: 2024-03-02 09:52:21 浏览: 67
下面是对应的C++代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Employee {
public:
Employee(string n, int id) : name(n), ID(id) {}
virtual ~Employee() {}
string getName() const { return name; }
int getID() const { return ID; }
virtual double getSalary() const = 0; // 纯虚函数,需要在派生类中实现
virtual void printInfo() const {
cout << "Name: " << name << ", ID: " << ID << endl;
}
protected:
string name;
int ID;
};
class Manager : public Employee {
public:
Manager(string n, int id, double s) : Employee(n, id), salary(s) {}
virtual ~Manager() {}
double getSalary() const override { return salary; }
void printInfo() const override {
Employee::printInfo();
cout << "Salary: " << salary << endl;
}
private:
double salary;
};
class Technician : public Employee {
public:
Technician(string n, int id, double w, int h) : Employee(n, id), wage(w), hours(h) {}
virtual ~Technician() {}
double getSalary() const override { return wage * hours; }
void printInfo() const override {
Employee::printInfo();
cout << "Wage: " << wage << ", Hours: " << hours << endl;
}
private:
double wage;
int hours;
};
int main() {
Employee* e1 = new Manager("Tom", 1001, 5000);
Employee* e2 = new Technician("Jerry", 2001, 20, 160);
e1->printInfo();
e2->printInfo();
delete e1;
delete e2;
return 0;
}
```
这里使用了纯虚函数实现了工资的计算,同时定义了虚函数输出员工的信息,派生类可以根据自己的数据成员自行扩展。在主函数中,使用了基类的指针对派生类对象进行了操作。
阅读全文