实验——菱形的继承派生关系(虚基类)

1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 class Person 6 { 7 protected: 8 string name; 9 char sex; 10 int age; 11 public: 12 Person() 13 { 14 cout<<"name:"; 15 cin>>name; 16 cout<<"sex:"; 17 cin>>sex; 18 cout<<"age:"; 19 cin>>age; 20 cout<<"construct a Person."<<endl; 21 } 22 Person(string iname,char isex,int iage):name(iname),sex(isex),age(iage) 23 { 24 cout<<"iconstruct a Person."<<endl; 25 } 26 void showName(){cout<<"name: "<<name<<endl;} 27 void showSex(){cout<<"sex: "<<sex<<endl;} 28 void showAge(){cout<<"age: "<<age<<endl;} 29 }; 30 31 class Employee:virtual public Person 32 { 33 private: 34 string pos;//职务 35 double empnum;//员工号 36 public: 37 Employee() 38 { 39 cout<<"position:"; 40 cin>>pos; 41 cout<<"empnum:"; 42 cin>>empnum; 43 cout<<"construct an Employee."<<endl; 44 } 45 Employee(string iname,char isex,int iage,string ipos,double iempnum):Person(iname,isex,iage),pos(ipos),empnum(iempnum) 46 { 47 cout<<"iconstruct an Employee."<<endl; 48 } 49 void showPos(){cout<<"position: "<<pos<<endl;} 50 void showEmpnum(){cout<<"employee number: "<<empnum<<endl;} 51 }; 52 53 class Student:virtual public Person 54 { 55 private: 56 string maj;//专业 57 double stunum;//学号 58 public: 59 Student() 60 { 61 cout<<"major:"; 62 cin>>maj; 63 cout<<"Student_number:"; 64 cin>>stunum; 65 cout<<"construct a Student."<<endl; 66 } 67 Student(string iname,char isex,int iage,string imaj,double istunum):Person(iname,isex,iage),maj(imaj),stunum(istunum) 68 { 69 cout<<"iconstruct a Student."<<endl; 70 } 71 void showStunum(){cout<<"student number: "<<stunum<<endl;} 72 void showMaj(){cout<<"major: "<<maj<<endl;} 73 }; 74 75 class PartTime_Graduate_Student:public Employee,public Student 76 { 77 private: 78 string graduate_school;//graduate_school 79 public: 80 PartTime_Graduate_Student() 81 { 82 cout<<"graduate school:"; 83 cin>>graduate_school; 84 cout<<"construct a PartTime_Graduate_Student."<<endl; 85 } 86 PartTime_Graduate_Student(const string &iname,char isex,int iage,const string &ipos,double iempnum,const string &imaj,double istunum,const string &igs):Person(iname,isex,iage),Employee(iname,isex,iage,ipos,iempnum),Student(iname,isex,iage,imaj,istunum),graduate_school(igs) 87 { 88 cout<<"iconstruct a PartTime_Graduate_Student."<<endl; 89 } 90 void showSchool(){cout<<"graduate school: "<<graduate_school<<endl;} 91 }; 92 93 int main() 94 { 95 PartTime_Graduate_Student pa("zzy",'f',18,"manager",2001,"computer science",2101,"ouc"); 96 pa.showName(); 97 pa.showSex(); 98 pa.showAge(); 99 pa.showPos(); 100 pa.showEmpnum(); 101 pa.showMaj(); 102 pa.showStunum(); 103 pa.showSchool(); 104 PartTime_Graduate_Student pb; 105 pb.showName(); 106 pb.showSex(); 107 pb.showAge(); 108 pb.showPos(); 109 pb.showEmpnum(); 110 pb.showMaj(); 111 pb.showStunum(); 112 pb.showSchool(); 113 return 0; 114 }
运行结果实例:

好久没来了,dachuang要学习的东西好多,不过跟某些人一起做事情就莫名很燃,加油~

浙公网安备 33010602011771号