5,530
社区成员
发帖
与我相关
我的任务
分享
class Employee
{
protected:
double m_basicSalary;
public:
Employee(double base = 1800):m_basicSalary(base)
{
}
virtual double PayAmount() const = 0;
static Employee* CreateEmployee(EmployeeType et)
{
switch(et)
{
case ENGINEER:
return new Engineer();
case SALESMAN:
return new SalesMan();
default:
throw "no such employee type!";
}
}
};
class Engineer : public Employee
{
public:
double PayAmount() const
{
return m_basicSalary;
}
};
class SalesMan : public Employee
{
double m_commission;
public:
SalesMan(double commission = 1000):m_commission(commission)
{
}
double PayAmount() const
{
return m_basicSalary+m_commission;
}
};