3.编写程序:(虚函数与多态) (1)有一个工厂有三类人:固定工资工人、计件工人、计时工人。 (2)他们有共同的特征:都有名字、住址。 (3)三类员工的工资计算方法不同:固定工资工人,每个月领的工资是不变的;计件工人根据生产的产品数量计算工资;计时工人根据工作的时间长短计算工资。 (4)在main函数中创建不同的员工,并依次输出每个员工的名字、住址和工资信息。 (5)设计程序,要求体现多态性。
时间: 2024-04-21 11:29:59 浏览: 26
#include<iostream>
using namespace std;
class Employee{
protected:
string name;//员工名字
string address;//员工住址
public:
Employee(string n, string a):name(n), address(a){}
virtual double pay() = 0;//虚函数,计算工资
virtual void display() = 0;//虚函数,输出员工信息
};
class SalariedEmployee:public Employee{//固定工资工人
protected:
double salary;//月薪
public:
SalariedEmployee(string n, string a, double s):Employee(n, a), salary(s){}
double pay(){//计算工资
return salary;
}
void display(){//输出员工信息
cout<<"姓名:"<<name<<"\t住址:"<<address<<"\t月薪:"<<pay()<<endl;
}
};
class PieceWorker:public Employee{//计件工人
protected:
int pieces;//产品数量
double wage;//每件产品的工资
public:
PieceWorker(string n, string a, int p, double w):Employee(n, a), pieces(p), wage(w){}
double pay(){//计算工资
return pieces*wage;
}
void display(){//输出员工信息
cout<<"姓名:"<<name<<"\t住址:"<<address<<"\t工资:"<<pay()<<endl;
}
};
class HourlyWorker:public Employee{//计时工人
protected:
double hours;//工作时间
double wage;//每小时工资
public:
HourlyWorker(string n, string a, double h, double w):Employee(n, a), hours(h), wage(w){}
double pay(){//计算工资
return hours*wage;
}
void display(){//输出员工信息
cout<<"姓名:"<<name<<"\t住址:"<<address<<"\t工资:"<<pay()<<endl;
}
};
int main(){
Employee *p[3];//定义基类指针数组
p[0] = new SalariedEmployee("张三", "上海", 5000);
p[1] = new PieceWorker("李四", "北京", 200, 20);
p[2] = new HourlyWorker("王五", "广州", 8, 100);
for(int i=0; i<3; i++){
p[i]->display();//调用虚函数输出员工信息
}
return 0;
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)