第十二週專案二教師兼幹部類
阿新 • • 發佈:2019-01-11
/* * Copyright (c) 2014, 煙臺大學計算機學院 * All rights reserved. * 作 者:紀麗娜 * 完成日期:2014 年05月13日 * 版 本 號:v1.0 * 問題描述: (第11章習題9)分別定義Teacher(教師)類和Cadre(幹部)類, 採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)。要求: (1)在兩個基類中都包含姓名、年齡、性別、地址、電話等資料成員。 (2)在Teacher類中還包含資料成員title(職稱),在Cadre類中還包含資料成員post(職務), 在Teacher_Cadre類中還包含資料成員wages(工資)。 (3)對兩個基類中的姓名、年齡、性別、地址、電話等資料成員用相同的名字, 在引用這些資料成員時,指定作用域。 (4)在類體中宣告成員函式,在類外定義成員函式。 (5)在派生類Teacher_Cadre的成員函式show中呼叫Teacher類中的display函式, 輸出姓名、年齡、性別、職稱、地址、電話,然後再用cout語句輸出職務與工資。 */ #include <iostream> using namespace std; class Teacher { protected: string name; int age; int sex; //1代表男的,0代表女的 string addr; string title; public: Teacher(string nam,int ag,int se,string ad,string tit):name(nam),age(ag),sex(se),addr(ad),title(tit){} void display(); }; void Teacher::display() { cout<<"name: "<<name<<endl; cout<<"age: "<<age<<endl; cout<<"sex: "; (sex==1)?cout<<"man\n":cout<<"woman\n";//1代表男的,0代表女的 cout<<"addr: "<<addr<<endl; cout<<"title: "<<title<<endl; } class Cadre { protected: string name; int age; int sex; //1代表男的,0代表女的 string addr; string post; public: Cadre (string nam,int ag,int se,string ad,string pos):name(nam),age(ag),sex(se),addr(ad),post(pos){} void display(); }; void Cadre::display() { cout<<"name: "<<name<<endl; cout<<"age: "<<age<<endl; cout<<"sex: "; (sex==1)?cout<<"man\n":cout<<"woman\n"; //1代表男的,0代表女的 cout<<"addr: "<<addr<<endl; cout<<"post:"<<post<<endl; } class Teacher_Cadre: public Teacher,public Cadre { protected: int wage; public: Teacher_Cadre(string nam,int ag,int se,string ad,string tit,string pos,int wa): Teacher(nam,ag,se,ad,tit),Cadre(nam,ag,se,ad,pos),wage(wa){} void show(); }; void Teacher_Cadre::show() { Teacher::display(); cout<<"post:"<<post<<endl; cout<<"wages: "<<wage<<endl; } int main() { Teacher_Cadre lk("nanana",23,1,"dezhouxiajin","mkf","CEO",450000); cout<<"1 , Teacher_Cadre: "<<endl; lk.show(); cout<<"2 , Cadre: "<<endl; Cadre ln("lklklk",22,0,"lyilyi","CEO"); ln.display(); cout<<"3 , Teacher: "<<endl; Teacher erbi("cccddd",21,1,"dezhouxiajin","CEO"); erbi.display(); return 0; }