介绍
本文主要操作为多态 and 纯虚函数接口类操作
源码
#include<iostream>
#include<string>
using namespace std;
//基类(员工类)
class Employee
{
public:
Employee()//构造函数(初始化)
{
m_num++;
m_id = m_num;
m_salary = 0.0;
}
virtual void getsalary() = 0;//用于基类调用(工资计算函数)
virtual void show()//打印结果
{
cout << m_name << " 编号:" << m_id << " 薪水:" << m_salary << endl;
}
protected:
string m_name;//姓名
int m_id;//编号
double m_salary;//薪水
static int m_num;//人员总数
double m_basesalary;//基本工资
};
int Employee::m_num = 1000;//人员总数 类外声明初始化(作为全局变量)
//经理
class Manager : virtual public Employee
{
public:
Manager(){}
Manager(string name)//构造函数(初始化 名字)
{
m_name = name;
m_basesalary = 8000.0f;//固定月薪8000
}
void getsalary()//工资计算公式
{
m_salary = m_basesalary;
}
};
//技术人员
class Technician :public Employee
{
public:
Technician(string name, int time) :m_time(time)//构造函数(初始化名字 时长)
{
m_name = name;
m_basesalary = 100;//固定时薪 100
}
void getsalary()//工资计算公式
{
m_salary = m_basesalary * m_time;
}
private:
int m_time;//工作时长
};
//推销员
class SalesMan :virtual public Employee
{
public:
SalesMan(){}
SalesMan(string name, double sale)//构造函数(初始化 名字)
{
m_name = name;
m_sale = sale;
m_partCount += sale;//月销售总额计算
}
void getsalary()
{
m_salary = m_sale*0.04;//月销售额的4%提成,
}
protected:
static double m_partCount;//月销售总额
private:
double m_sale;//月销售额
};
double SalesMan::m_partCount = 0.0f;//月销售总额(作为全局变量)
//销售经理
class SaleManager : public SalesMan, public Manager
{
public:
SaleManager(string name)//构造函数(初始化 名字)
{
m_name = name;
m_basesalary = 5000;
}
void getsalary()
{
m_salary = m_basesalary + m_partCount*0.05;//固定工资5000+月销售总额5%的提成
}
};
int main()
{
//经理
Manager ma("渔夫");
ma.getsalary();
ma.show();
//技术人员
Technician mb("一航", 90);
mb.getsalary();
mb.show();
//推销员
SalesMan mc("花花", 100000);
mc.getsalary();
mc.show();
SalesMan mc2("煎蛋", 70000);
mc2.getsalary();
mc2.show();
//销售经理
SaleManager md("欣欣");
md.getsalary();
md.show();
system("pause");
}
运行结果
渔夫 编号:1001 薪水:8000
一航 编号:1002 薪水:9000
花花 编号:1003 薪水:4000
煎蛋 编号:1004 薪水:2800
欣欣 编号:1005 薪水:13500
请按任意键继续. . .