望采纳
可以使用以下代码来实现:
#include <iostream>
#include <string>
using namespace std;
// 定义基类Employee
class Employee
{
public:
Employee(string name, int salary)
{
m_name = name;
m_salary = salary;
}
virtual void input()
{
cout << "请输入员工姓名:";
cin >> m_name;
cout << "请输入员工工资:";
cin >> m_salary;
}
virtual void output()
{
cout << "员工姓名:" << m_name << endl;
cout << "员工工资:" << m_salary << endl;
}
protected:
string m_name;
int m_salary;
};
// 定义派生类Manager
class Manager : public Employee
{
public:
Manager(string name, int salary, int bonus) : Employee(name, salary)
{
m_bonus = bonus;
}
virtual void input()
{
Employee::input();
cout << "请输入绩效奖金:";
cin >> m_bonus;
}
virtual void output()
{
Employee::output();
cout << "绩效奖金:" << m_bonus << endl;
}
private:
int m_bonus;
};
// 定义派生类Worker
class Worker : public Employee
{
public:
Worker(string name, int salary, int overtime) : Employee(name, salary)
{
m_overtime = overtime;
}
virtual void input()
{
Employee::input();
cout << "请输入加班时长:";
cin >> m_overtime;
}
virtual void output()
{
Employee::output();
cout << "加班时长:" << m_overtime << endl;
}
private:
int m_overtime;
};
// 定义派生类Salesman
class Salesman : public Employee
{
public:
Salesman(string name, int salary, int commission) : Employee(name, salary)
{
m_commission = commission;
}
virtual void input()
{
Employee::input();
cout << "请输入提成:";
cin >> m_commission;
}
virtual void output()
{
Employee::output();
cout << "提成:" << m_commission << endl;
}
private:
int m_commission;
};
// 定义派生类Technician
class Technician : public Employee
{
public:
Technician(string name, int salary, int allowance) : Employee(name, salary)
{
m_allowance = allowance;
}
virtual void input()
{
Employee::input();
cout << "请输入津贴:";
cin >> m_allowance;
}
virtual void output()
{
Employee::output();
cout << "津贴:" << m_allowance << endl;
}
private:
int m_allowance;
};
int main()
{
Employee *employees[4];
employees[0] = new Manager("张三", 10000, 1000);
employees[1] = new Worker("李四", 8000, 10);
employees[2] = new Salesman("王五", 6000, 500);
employees[3] = new Technician("赵六", 5000, 200);
for (int i = 0; i < 4; i++)
{
employees[i]->input();
employees[i]->output();
}
return 0;
}