c++语言基础—多态—创建雇员信息类
题目: 创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分别表示雇员的姓名、编号和月薪。 再从employee类派生出3个类worker、technician和salesman,分别代表普通工人、科研人员、销售人员。三个类中分别包含 数据成员productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人员每月工作的时数和销售人员每月 的销售额。要求在employee类中声明虚成员函数pay,并在各个派生类中覆盖pay函数,用来计算雇员的月薪,并假定: 普通工人的月薪=每月生产的产品数×每件产品的赢利×20% 科研人员的月薪=每月的工作时数×每小时工作的酬金 销售人员的月薪=月销售额×销售额提成。 创建一个通用函数CalculateSalary,用来计算并返回各种不同类型雇员的月薪。函数 CalculateSalary的原型如下: float CalculateSalary(employee *emptr); 在main函数中分别声明worker类、technician类和salesman类的对象代表各种类型的 雇员,并调用函数CalculateSalary来计算他们的月薪 代码实现: #include #include using namespace std; //以下是雇员类的实现 class employee { protected: string name; int empNo; float salary; public: employee() { name="noname";empNo=0;salary=0.0; } employee(string name,int empNo,float salary) { this->name=name; this->empNo=empNo; this->salary=salary; } ~employee(){} virtual float pay(){return 0.0;} }; class worker:public employee { protected: int productNum; public: worker(string name,float salary,int productNum):employee(name,empNo,salary) { this->productNum=productNum; } ~worker(){} float pay() { return salary+productNum*80*0.2; } }; class technician:public employee { protected: int workHours; public: technician(string name,int workHours):employee(name,salary) { this->workHours=workHours; } ~technician(){} float pay() { return salary+workHours*200; } }; class salesman:public employee { protected: float monthlysales; public: salesman(string name,float monthlysales):employee(name,salary) { this->monthlysales=monthlysales; } ~salesman(){} float pay() { return salary+monthlysales*1.8; } }; float CalculateSalary(employee *emptr) { return emptr->pay(); } void main() { employee *emp1=new worker("s1",001,1000.0,180); employee *emp2=new technician("s2",002,35); employee *emp3=new salesman("s3",003,2400); cout<<"工人的月薪为"< cout<<"科研人员的月薪为"< cout<<"销售人员的月薪为"< } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |