通过friend关键字实现员工和经理类
/*功能:实现员工和经理类作者:wind日期:2013-11-08*/#include <iostream>#include <string>using namespace std;
int n=0,m=0;class Manager;//员工class Employee{public: Employee(string iName=NULL,int iAge=NULL,int iYear=0,int iNum=0); ~Employee(){}; void printOn(Employee&); void retire(); friend Manager;private: string m_iName; int m_iAge; int m_iYear; int m_iNum;};//经理class Manager:public Employee{public: Manager(string iName=NULL,int iAge=NULL,int iYear=0,int iNum=0,int ilevel = 0); ~Manager(){}; void printOn(Manager&); void retire();private: int m_iLevel;
};
Employee::Employee(string iName,int iAge,int iYear,int iNum){ m_iName=iName; m_iAge=iAge; m_iYear=iYear; m_iNum=iNum; n++;
}
Manager::Manager(string iName,int iAge,int iYear,int iNum,int ilevel){ m_iName=iName; m_iAge=iAge; m_iYear=iYear; m_iNum=iNum; m_iLevel=ilevel;
}
void Employee::printOn(Employee&obj){ cout<<obj.m_iName<<" "<<obj.m_iAge<<" "<<obj.m_iYear<<" "<<obj.m_iNum<<endl;}
void Employee::retire(){ if (m_iAge>=55) {
cout<<m_iName<<"超过了退休年龄,"<<m_iName<<"办理了退休手续"<<endl; n--; }}
void Manager::printOn(Manager&obj){ cout<<obj.m_iName<<" "<<obj.m_iAge<<" "<<obj.m_iYear<<" "<<obj.m_iNum<<endl;}
void Manager::retire(){ if (m_iAge>=60) {
cout<<m_iName<<"超过了退休年龄,"<<m_iName<<"办理了退休手续"<<endl; m--; }}
int main(void){
string name; int age; int year; int num; int level; int i=0;
cout<<"请输入员工的姓名、年龄、工作年限和部门号:"; cin>>name>>age>>year>>num; Employee a(name,age,year,num);
cout<<"请输入员工的姓名、年龄、工作年限和部门号:"; cin>>name>>age>>year>>num; Employee b(name,age,year,num);
cout<<"请输入经理的姓名、年龄、工作年限和部门号、级别:"; cin>>name>>age>>year>>num>>level; Manager c(name,age,year,num,level);
cout<<"公司共有员工:"<<n<<"人,"<<" 经理"<<m<<"人。"; a.retire();
b.retire(); c.retire(); cout<<"公司共有员工:"<<n<<"人,"<<" 经理"<<m<<"人。"; system("pause"); return 0;}
评论