1.定义一个employee类(雇员类),包含了级别(grade)、月薪(accumPay)等保护数据成员,包含构造函数及成员函数pay(),实现月薪计算函数pay()(返回值为accumPay,accumPay=grade×30)。定义employee类的派生类:worker类(工人人员类)、salesman类(销售人员类)、manager类(管理人员类),并分别实现各派生类的构造函数及月薪计算函数pay()。各派生类月薪计算关系如下:
1)工人人员月薪总额【工龄工资+按小时计酬】:雇员类月薪(工龄工资)+100×workHours(当月工作时数)
2)推销人员月薪总额【工龄工资+按小时计酬+销售提成】:雇员类月薪(工龄工资)+100×workHours (当月工作时数)+sales(当月销售额)×0.01
3)管理人员月薪总额【工龄工资+固定月薪数】:雇员类月薪(工龄工资)+8000(固定月薪数)
各派生类对象初始化值如下:
基本雇员(级别:10)
工人人员(级别:2、 工作时数:10)
销售人员(级别:3、 工作时数:10、 销售额2000)
管理人员(级别:5)
#include<iostream> using namespace std; class Employee{ public: Employee(int Grade){ grade=Grade; cout<<"基础月薪:"<<pay()<<endl; } int pay(){ int accumPay; accumPay=grade*30; return accumPay; } private: int grade; }; class worker:public Employee{ public: worker(int Grade,int workHours):Employee(Grade){ hours=workHours; cout<<"工人月薪总额:"<<Pay()<<endl; } int Pay(){ return pay()+hours*100; } private: int hours; }; class salesman:public Employee{ public: salesman(int Grade,int workHours,int Sales):Employee(Grade){ hours=workHours; sales=Sales; cout<<"推销人员月薪总额:"<<Pay()<<endl; } int Pay(){ return pay()+hours*100+sales*0.01; } private: int hours,sales; }; class manager:public Employee{ public: manager(int Grade):Employee(Grade){ cout<<"管理人员月薪总额:"<<Pay()<<endl; } int Pay(){ return pay()+8000; } }; int main(){ Employee my_employee(10); worker my_worker(2,10); salesman my_salesman(3,10,2000); manager my_manager(5); return 0; }
转载于:https://blog.51cto.com/983836259/1338340