C++_基本工资计算(多态操作)

文章详细介绍了如何在C++中使用多态和纯虚函数创建基类(Employee)及其派生类(Manager,Technician,SalesMan,SaleManager),展示了如何通过虚函数实现工资计算和动态绑定功能。
摘要由CSDN通过智能技术生成

介绍

本文主要操作为多态 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
请按任意键继续. . .
  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值