高级语言C++程序设计 (第二版) 刘景、周玉龙編
高级语言C++程序设计 (第二版) 刘景、周玉龙编
第八章继承与派生 ■81公司雇员档案的管理 分析:由于对不同的雇员,其档案保存的内容不同,所以可以定 义多个类来表示公司雇员 employee(雇员)类:姓名、年龄、工资。 manager(经理)类:姓名、年龄、工资、行政级别 engineer(工程师)类:姓名、年龄、工资、专业、学位。 director(高级主管)类:姓名、年龄、工资、专业、学位、 职务。 结果:把 employee作为基类; manager和 engineer作为 employee的派生类; directo作为 engineer的派生类。 程序: //program 8-1. cpp /inlcude<iostream.h> //include<string.h>
第八章 继承与派生 ◼ 8.1 公司雇员档案的管理 ➢ 分析:由于对不同的雇员,其档案保存的内容不同,所以可以定 义多个类来表示公司雇员。 ➢ employee(雇员)类:姓名、年龄、工资。 ➢ manager(经理)类:姓名、年龄、工资、行政级别。 ➢ engineer(工程师)类:姓名、年龄、工资、专业、学位。 ➢ director(高级主管)类:姓名、年龄、工资、专业、学位、 职务。 ➢ 结果:把employee作为基类;manager和engineer作为 employee的派生类;director作为engineer的派生类。 ➢ 程序: //program 8-1.cpp //inlcude<iostream.h> //include<string.h>
第八章继承与派生 class employee short agei float salary; protected: char *name public: employee( short ag float sa, char*na){/构造函数 age=agi salary =sap name=new char[strlen(na)+1] strcpy(name nai void printo const cout<≤“”<<name<≤
第八章 继承与派生 class employee { short age; float salary; protected: char *name; public: employee(short ag,float sa,char *na){ //构造函数 age=ag; salary=sa; name=new char[strlen(na)+1]; strcpy(name,na); } void print() const{ cout<<“ ”<<name<<“:”;
第八章继承与派生 cout<<age<<“:” cout<<salary<<endi vemployeeoi delete []name;y class manager: public employee int level: public: manager(short ag float sa, char *na int lev) employee ag sa, na leveller: } void printo const employee: print(://调用基类的 print(
第八章 继承与派生 cout<<age<<“:”; cout<<salary<<endl; } ~employee() { delete []name;} }; class manager:public employee{ int level; public: manager(short ag,float sa,char *na,int lev) :employee(ag,sa,na){ level=lev; } void print() const{ employee::print();//调用基类的print()
第八章继承与派生 cout<< leve:”<<leve|<<end; Si class engineer:public employee char speciality adegree;//专业和学位 public: engineer(short ag float sa, char *na, char sp, char ad) employee (ag sa, nat speciality=spi adegree=ad; } void printo const t employee: printo//调用基类的 printo
第八章 继承与派生 cout<<“ level:”<<level<<endl; } }; class engineer:public employee{ char speciality,adegree;//专业和学位 public: engineer(short ag,float sa,char *na,char sp,char ad) :employee(ag,sa,na){ speciality=sp; adegree=ad; } void print() const{ employee::print();//调用基类的print()