Problem Description
设计工人类Worker,它具有姓名name,年龄age,工作部门dept,工资salary等数据成员。
其中,salary为Salary类型的数据,包括基本工资Wage,岗位工资Subsidy,房租Rent,水费WaterFee,电费ElecFee。
实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee,用double RealSalary()成员函数计算。
Worker类用静态成员num统计工人的人数。
输出格式为:左对齐,每个输出项占10列。
//你的代码将被嵌在这里
int main() {
Worker w1("John", 30, "design",5000,1200,400,200,800);
Worker w2,w3;
w1.display();
cout << "总人数为:"<<Worker::num << endl;
return 0;
}
Sample Input
无
Sample Output
Name Age Dept Wage Subsidy Rent WaterFee ElecFee RealSalary John 30 design 5000 1200 400 200 800 4800 总人数为:3
#include<iostream>
#include<cmath>
#include<string>
#include<iomanip>
using namespace std;
class Salary {
protected:
int Wage;
int Subsidy;
int Rent;
int WaterFee;
int ElecFee;
public:
Salary(int wa = 0, int su = 0, int re = 0, int wate = 0, int el = 0)
{
Wage = wa;
Subsidy = su;
Rent = re;
WaterFee = wate;
ElecFee = el;
}
};
class Worker :public Salary {
string name;
int age;
string dept;
Salary salary;
public:
static int num;//静态变量
Worker(string a = "", int b = 0, string c = "", int wa = 0, int su = 0, int re = 0, int wate = 0, int el = 0) : Salary(wa, su, re, wate, el)
{
name = a;
age = b;
dept = c;
num++;
}//构造函数一次加一次
double RealSalary();
void display()
{
cout << setw(10) << left << "Name" << setw(10) << "Age" << setw(10) << "Dept" << setw(10) << "Wage" << setw(10) << "Subsidy" << setw(10) << "Rent" << setw(10) << "WaterFee" << setw(10) << "ElecFee" << setw(10) << "RealSalary" << endl;
cout << left << setw(10) << name << setw(10)
<< age << setw(10) << dept << setw(10)
<< Wage << setw(10) << Subsidy << setw(10)
<< Rent << setw(10) << WaterFee << setw(10)
<< ElecFee << RealSalary() << endl;
}
};
double Worker::RealSalary()
{
return Wage + Subsidy - Rent - WaterFee - ElecFee;
}
int Worker::num = 0;//初始化为0
int main() {
Worker w1("John", 30, "design", 5000, 1200, 400, 200, 800);
Worker w2, w3;
w1.display();
cout << "总人数为:" << Worker::num << endl;
return 0;
}
运行结果如下: