//HW_CH04_50
/*
4-47
编写一个工资管理程序,将雇员类作为所有类的基类,
其派生类包括经理类、销售类、计件工类和小时工类。
经理的收入为固定的月薪;销售的收入是一小部分的基本工资加上销售额的提成;
计件工的收入完全取决于其生产的工件数量;
小时工的收入以小时计算,再加上加班费。
4-50
修改习题4-47中的程序,将基类的工资计算函数改为纯虚函数
雇员-Employees
经理-Manager
销售-Salesman
计件工-Pieceworker;
小时工-Hourlyworker
pay
*/#include
#include
using namespace std;class Employee {
public:string name;float basepay;float realpay;
public:Employee(string name, float basepay) {this->name = name;this->basepay = basepay;}// 声明纯虚函数virtual void pay() = 0;
};class Manager:public Employee {
public:Manager(string name, float basepay) :Employee(name, basepay) {}// 重新定义虚函数void pay() {realpay = basepay;cout << name << " who is a manager, his pay is : " << realpay<sale = sale;}// 重新定义虚函数void pay() {realpay = basepay + sale * 0.02;cout << name << " who is a salesmen, his pay is : " << realpay << endl;}
};class Pieceworker :public Employee {
private:int number;
public:Pieceworker(string name, float basepay, int number) :Employee(name, basepay) {this->number = number;}// 重新定义虚函数void pay() {realpay = basepay + number * 4;cout << name << " who is a pieceworker, his pay is :" << realpay << endl;}
};class Hourlyworker :public Employee {
private:float hour;float overtimePay;
public:Hourlyworker(string name, float basepay, float hour, float overtimePay) :Employee(name, basepay) {this->hour = hour;this->overtimePay = overtimePay;}// 重新定义虚函数void pay() {realpay = basepay + hour * 15 + overtimePay;cout << name << " who is a Hourlyworker, his pay is :" << realpay << endl;}
};int main() {Manager m("liulu", 8222);m.pay();Salesman s("wangliu", 1800, 100000);s.pay();Pieceworker p("zhangke", 0, 5000);p.pay();Hourlyworker h("houzi", 0, 220, 600);h.pay();return 0;
}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!