多继承与虚继承

来源:互联网 发布:贝乐虎儿歌软件 编辑:程序博客网 时间:2024/04/29 00:33
#include<iostream>
using namespace std;
class Person
{
private:
char sex,name[10];
int age;
public:
Person(char s=0,char *n=0,int a=0):sex(s),age(a){strcpy(name,n);}
void setdata()
{
cout<<"please input person's name:"<<endl;
cin>>name;
cout<<"please input person's sex:"<<endl;
cin>>sex;
cout<<"please input person's age:"<<endl;
cin>>age;
}
char getsex(){return sex;}
char* getname(){return name;}
int getage(){return age;}
void Show()
{
cout<<"name  sex       age"<<endl;
cout<<name<<"\t"<<sex<<"\t"<<age<<endl;
}
};
class Teacher:virtual public Person
{
private:
char title[10];
public:
Teacher(char *t=0,char s=0,char *n=0,int a=0):Person(s,n,a){strcpy(title,t);}
void settitle()
{
Person::setdata();
cout<<"please input person's title:"<<endl;cin>>title;
}
char* gettitle(){return title;}
void Show()
{
cout<<"name   sex     age  title"<<endl;
cout<<getname()<<"\t"<<getsex()<<"\t"<<getage()<<"\t"<<title<<endl;
}
};
class Cadre: virtual public Person
{
private:
char post[10];
public:
Cadre(char *p=0,char s=0,char *n=0,int a=0):Person(s,n,a)
{strcpy(post,p);}
void setpost()
{
Person::setdata();
cout<<"please input person's post:"<<endl;cin>>post;
}
char* getpost(){return post;}
void Show()
{
cout<<"name   sex    age   post"<<endl;
cout<<getname()<<"\t"<<getsex()<<"\t"<<getage()<<"\t"<<post<<endl;
}
};
class TeacherCadre: public Teacher, public Cadre
{
private:
double wage;
public:
TeacherCadre (double w=0,char s=0,char *n=0,char *p=0,char *t=0,int a=0):wage
(w),Teacher(t,s,n,a),Cadre(p,s,n,a),Person(s,n,a){}
void setwage()
{
char* t=gettitle();
Cadre::setpost();
cout<<"please input person's title:"<<endl;cin>>t;
cout<<"please input person's wage:"<<endl;cin>>wage;
}
void Show()
{
cout<<"name       sex   age   title   post   wage"<<endl;
cout<<getname()<<"\t"<<getsex()<<"\t"<<getage()<<"\t"<<gettitle()
<<"\t"<<getpost()<<"\t"<<wage<<endl;
}

}; 


void main()
{
Teacher A("0",0,"0",0);
A.settitle();
A.Show();
Cadre B("0",0,"0",0);
B.setpost();
B.Show();
    TeacherCadre D(0,0,"0","0","0",0); 
D.setwage();
D.Show();
}


原创粉丝点击