老板实行年薪制,如一年15万;
雇员按月计酬,方法是基本工资+奖金;
小时工按工作时间计算报酬,方法是工作小时*每小时单价;
营销人员按月计酬,方法是基本工资+销售利润 *5%。
每类人员都有姓名、职工编号、年龄、性别、工资等数据。设计计算各类人员报酬的程序,用虚函数getPay()计算各类人员的应得报酬。用虚函数print()打印输出各类工作人员的基本数据。
提示:将各类人员都共有的属性和行为抽象在类Person中,包括姓名、职工编号、年龄、性别等,以及函数getPay()和print()。getPay()设计为纯虚函数。将print()设计成一般虚函数,其余类从Person类派生,各类再定义getPay()的实现方法,并重载函数print()输出具体数据。
解读
这个题是典型的面向对象的一道题,并作为C++学习中的一道例题或习题。其运用到所学习的构造函数、继承派生、多态以及虚函数的综合运用。
注意
本人水平有限,现在正处于初识学习阶段,提供一些我的思考,以供参考。
题解
总体结构如下
全部代码
#include<iostream>
#include<string>
using namespace std;
class Person{
string Name;
string Id;
short Age;
string Sex;
public:
Person(string name, string id, short age, string sex) {
Name = name; Id = id; Age = age; Sex = sex; }
string getName() {
return Name; }
string getId() {
return Id; }
short getAge() {
return Age; }
string getSex() {
return Sex; }
float getSalary() {
return 0.0; }
virtual void print() {
cout << "姓名: " << Name << "\t编号: " << Id << "\t年龄: " << Age << "\t性别: " << Sex << endl; }
virtual void getPay() = 0;
};
class Boss :public Person {
int sal = 150000;
public:
Boss(string name, string id