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

  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要学习的东西好多,不过跟某些人一起做事情就莫名很燃,加油~

 

posted @ 2021-05-27 21:29  satellite&  阅读(256)  评论(0)    收藏  举报