C++语言程序设计

管理人员是普通雇员的一种，它的定义如下：

| 例11-30

//管理人员类
class Manager : public Employee
{
public:
//isSalaried //付薪方式：true 付薪固定工资，false按小时付薪
Manager(char *theName, float thePayRate, bool isSalaried);
bool getSalaried() const;
float pay(float hoursWorked) const;
protected:
bool salaried;
};

成员函数的定义如下：

| 例11-31

Manager::Manager(char *theName,float thePayRate,bool isSalaried)
: Employee(theName, thePayRate)
{
salaried = isSalaried;
}

bool Manager::getSalaried() const
{
return salaried;
}

float Manager::pay(float hoursWorked) const
{
if (salaried)
return payRate;
/* else */
return Employee::pay(hoursWorked);
}

主管人员是管理人员的一种，其定义如下（成员函数被定义为内联的）：

| 例11-32

//主管人员类
class Supervisor : public Employee
{
public:
Supervisor(char *theName, float thePayRate, float theBouns):
Employee (theName, thePayRate, true) ,bouns(theBouns) {}
float getBouns() const { return bouns; }
float pay(float hoursWorked) const {
return payRate+bouns;
}
protected:
float bouns;
}

普通雇员类是所有类的基类，描述了雇员的一些基本信息，管理人员类从普通雇员类派生，管理人员的付薪方式与普通雇员可能同，所以该类添加了一个成员变量标识这种差异，并覆盖了基类的pay()函数。主管类从管理人员类派生，主管人员是管理人员的一种，他们不仅支付固定薪水，而且还有奖金。所以在主管类种添加了bonus成员，保存他们的奖金数额，并覆盖了管理人员类的pay()函数重新计算工资。