加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c++语言基础—多态—创建雇员信息类

发布时间:2020-12-15 04:52:31 所属栏目:百科 来源:网络整理
导读:题目: 创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分别表示雇员的姓名、编号和月薪。 再从employee类派生出3个类worker、technician和salesman,分别代表普通工人、科研人员、销售人员。三个类中分别包含 数据成员productNum、w

题目:


创建一个表示雇员信息的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<<"销售人员的月薪为"<

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读