多态继承与派生
来源:互联网 发布:linux在目录下创建文件 编辑:程序博客网 时间:2024/06/06 01:47
/************************************************************************
**本程序功能:实现小型公司的工资管理,该公司主要有4类人员:经理、
**兼职技术人员、销售员和销售经理。要求存储这些人员的编号、姓名、
**月工资,计算月工资并显示全部信息,经理拿固定月薪8K,兼职技术人员按每小时
**100元领月薪,销售员当月销售额4%提成,销售经理拿5K并提成所管辖部门当月销售
**总额的5%%.
***方法:本程序看起来比较复杂,其实分开解决是很简单的,首先定义一个职员的基
******** 类,然后实现兼职技术人员,在实现经理,然后在实现销售员与销售经理
**************************************************************************/
#include <iostream>
using namespace std;
class employee //定义一个基类(包含6个成员)
{
protected:
int Numb; //存储职工编号
char name[10]; //存储职工名字
int salary; //存储职工本月工资
public:
employee() //构造函数 获取职工编号和姓名
{
cout << "职工编号:";
cin >> Numb;
cout << "职工姓名:";
cin >> name;
salary = 0;
}
virtual void pay() {}//计算月工资
virtual void disp() {}//显示全部信息(编号、姓名、月工资)
};
class manager:virtual public employee//为什么要用virtual ,不用报错,靠!
{
protected:
double monthlypay;
public:
manager() { monthlypay = 8000; }
void pay() {salary = monthlypay; }
void disp()
{
cout << "经理" << name << "(编号为" << Numb \
<< ")" << "本月工资:" << salary << endl;
}
};
class technician:public employee//派生兼职技术人员
{
double hourlyrate;//每小时的额度
int workhours;/*月工作的小时数*/
public:
technician() { hourlyrate = 100; }
void pay()
{
cout << name << "本月工作时数:";/*获取工作时间计算工资*/
cin >> workhours;
salary = hourlyrate * workhours;
}
void disp()
{
cout << "兼职技术人员" << name << "(编号为" << Numb \
<< ")" << "本月工资" << salary << endl;
}
};
class salesman:virtual public employee
{
protected:
double commrate;
double sales;
public:
salesman() { commrate = 0.04;}
void pay()
{
cout << name << "本月销售额:";
cin >> sales;
salary = sales * commrate;
}
void disp()
{
cout << "销售员" << name << "(编号为" << Numb \
<< ")" << "本月工资:" << salary << endl;
}
};
class salesmanager:public manager,public salesman
{
public:
salesmanager()
{
monthlypay = 5000;
commrate = 0.005;
}
void pay()
{
cout << name << "所管部门月销售量:";
cin >> sales;
salary = monthlypay + commrate * sales;
}
void disp()
{
cout << "销售经理" << name << "(编号为" << Numb \
<< ")" << "本月工资:" << salary << endl;
}
};
void main()
{
manager m1;
technician t1;
salesman s1;
salesmanager sm1;
m1.pay();
m1.disp();
t1.pay();
t1.disp();
s1.pay();
s1.disp();
sm1.pay();
sm1.disp();
}
- 多态继承与派生
- 继承与派生——多继承
- 继承派生多态(转东转西)
- C++ 继承派生多态
- 派生类与继承
- C++继承与派生
- C++ [ 继承与派生 ]
- 继承与派生
- 继承与派生
- 继承与派生
- 继承与派生
- C++ 继承与派生
- c++继承与派生
- 继承与派生
- 派生与继承
- c++继承与派生
- 20、继承与派生
- c++继承与派生
- Camera编程
- HTML,CSS,Javascript和DOM的关系
- CCS5.2 中文显示乱码问题解决方法
- Android应用请求获取Root权限
- OSPF协议
- 多态继承与派生
- oracle 11g的awr报告生成
- 富翁和陌生人换钱游戏
- Raid Group, Storage Pool, Storage Group等一些概念的区别
- svn命令
- JS操作Cookies (很有用)
- 深入了解Struts2返回JSON数据的原理及具体应用范例
- iOS php消息推送
- 小情调的伤感空间日志分享:亲爱的、你还不懂么?