C++语言复习十 类的继承和派生 实例
来源:互联网 发布:销售网络的含义 编辑:程序博客网 时间:2024/05/29 03:12
类的继承和派生 实例
继承关系:
----------------------------------------------
普通雇员---->(pubilc)兼职技术人员
-----------------------------------------------
普通雇员---->(virtual pubilc)推销员
------------------------------------------------
普通雇员---->(virtual pubilc)经理
-----------------------------------------------
---->推销员
普通雇员 (pubilc) ---->销售经理
---->经理
-----------------------------------------------
#include<iostream.h>#include<string.h>//----------------------------------------------------------------------------//类的定义class employee //普通雇员{protected:char*name;intindividualEmpNo; //个人编号intgrade; //级别floataccumPay; //月薪总额staticint employeeNo; //本公司职员编号目前的最大值public:employee(); //构造函数~employee(); //析构函数void pay(); //计算月薪函数void promote(int); //升级函数void displayStatus(); //显示人员信息};class technician: public employee //兼职技术人员类{private:floathourlyRate; //每小时酬金intworkHours; //当月工作时数public:technician(); //构造函数void pay(); //计算月薪函数void displayStatus(); //显示人员信息};class salesman: virtual public employee //推销员类{protected:float CommRate; //按销售额提取酬金的百分比float sales; //当月销售额public:salesman();void pay();void displayStatus(); //显示人员信息};class manager:virtual public employee //经理类{protected:float monthlyPay; //固定月薪数public:manager();void pay();void displayStatus();};class salesmanager:public manager,public salesman //销售经理类{public:salesmanager();void pay();void displayStatus(); //显示人员信息};//---------------------------------------------------------------------------------------//类的实现int employee::employeeNo = 1000; //员工编号基数10000employee::employee(){char namestr[50]; //输入雇员的姓名临时存放在namestr中cout<<"请输入一个雇员的姓名:";cin>>namestr;name = new char[strlen(namestr)+1]; //动态申请用于存放的内存空间strcpy(name,namestr);//将临时存放的姓名复制到nameindividualEmpNo = employeeNo++; //新输入的员工,其编号为目前最大编号加1grade = 1; //级别初值为1accumPay = 0.0; //月薪总额初值为0}employee::~employee(){delete name; //在析构函数中删除为存放姓名动态分配的内存空间}void employee::pay () //计算月薪{}void employee::promote (int increment){grade+=increment; //升级,提升的级数由increment指定}void employee::displayStatus () //显示人员信息,空函数{}technician::technician(){hourlyRate = 100; //每小时酬金100}void technician::pay(){cout<<"请输入"<<name<<"本月的工作时数:";cin>>workHours;accumPay = hourlyRate*workHours;//计算月薪。按小时计算cout<<"兼职技术人员:"<<name<<"编号:"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void technician::displayStatus (){cout<<"兼职技术人员:"<<name<<"编号:"<<individualEmpNo<<"级别为"<<grade<<"级,以付本月工资"<<accumPay<<endl;}salesman::salesman(){CommRate = 0.04f; //销售提成比例4%}void salesman::pay (){cout<<"请输入"<<name<<"本月销售额";cin>>sales;accumPay = sales*CommRate; //月薪=销售提成cout<<"推销员:"<<name<<"编号:"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void salesman::displayStatus (){cout<<"推销员:"<<name<<"编号:"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}manager::manager(){monthlyPay = 8000; //固定月薪}void manager::pay (){accumPay = monthlyPay; //月薪总额即固定月薪数cout<<"经理:"<<name<<"编号:"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void manager::displayStatus (){cout<<"经理:"<<name<<"编号:"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}salesmanager::salesmanager(){monthlyPay = 5000;CommRate = 0.005f;}void salesmanager::pay(){cout<<"请输入"<<employee::name<<"所管部门本月的销售总额";cin>>sales;accumPay = monthlyPay+CommRate*sales;//月薪=固定月薪 +销售提成cout<<"销售经理:"<<name<<"编号:"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void salesmanager::displayStatus (){cout<<"销售经理:"<<name<<"编号:"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}//-----------------------------------------------------------------//主函数int main(){manager m1; //定义一个经理m1technician t1; //定义一个兼职技术人员t1salesmanager sm1;//定义一个销售经理sm1salesman s1; //定义一个推销员s1m1.promote(3);m1.pay ();m1.displayStatus ();t1.promote (2);t1.pay ();t1.displayStatus ();sm1.promote (2);sm1.pay ();sm1.displayStatus ();s1.pay();s1.displayStatus ();return 0;}//----------------------------------------------------------------------
某次运行结果:(红色框是cin的数据。)
- C++语言复习十 类的继承和派生 实例
- C语言类的继承和派生
- [C++]继承和派生类
- 模块的封装(二):C语言类的继承和派生
- C++: 类的继承派生
- C++----继承和派生
- 【C++】继承和派生
- 类的继承和派生
- 类的继承和派生
- 类的继承和派生
- OBJ-C类的继承和派生学习笔记
- C++__继承和派生
- 【c++】实例演示类继承中派生类到基类的转换及虚函数
- 2015-十一周-类的派生继承-项目三
- 继承与派生类实例
- 继承和派生类
- 复习继承派生
- C++类的继承和派生
- Windows下删除.svn文件夹的最简易方法
- [Domino配置参数] FTBasePath
- poj 1050 To the Max
- test
- jQuery基础之三 -- 操作DOM
- C++语言复习十 类的继承和派生 实例
- 在 Ubuntu 上换用 OSS4 声音系统
- 一则TX - row lock contention处理详解
- IBM出版新书 - XPages Extension Library
- STL map
- iOS开发笔记——PDF的显示和浏览
- Maven 与 Tomcat7
- 线程与线程属性
- 分类与聚类的区别