//提醒一下,此题在初始化中如果major(_major)会报错,原因是使用了万能头文件,解决方法要么。。要么。你懂的
//代码如下:
#include <iostream>
#include<string>
#include<iomanip>
using namespace std;
class Person
{
string name;
int age;
char sex;
string tele;
string address;
public:
Person(string _name,int _age,char _sex,string _address,string _tele):name(_name),age(_age),sex(_sex),address(_address),tele(_tele){}
void getName()
{
cout<<"name:"<<name<<endl;
}
void getAge()
{
cout<<"age"<<age<<endl;
}
void getSex()
{
cout<<"sex:"<<sex<<endl;
}
void getAddress()
{
cout<<"address:"<<address<<endl;
}
void getTele()
{
cout<<"tel:"<<tele<<endl;
}
void setAddr(string _address)
{
address=_address;
}
void setTel(string _tele)
{
tele=_tele;
}
};
class Student:virtual public Person
{
string major;
public:
Student(string _name,int _age,char _sex,string _address,string _tele,string _major):Person(_name,_age,_sex,_address,_tele),major(_major){}
void getMajor()
{
cout<<"major:"<<major<<endl;
}
};
class Cadre:virtual public Person
{
string post;
public:
Cadre(string _name,int _age,char _sex,string _address,string _tele,string _post):Person(_name,_age,_sex,_address,_tele),post(_post){}
void getPost()
{
cout<<"post:"<<post<<endl;
}
};
class Student_Cadre:public Student , public Cadre
{
double wages;
public:
Student_Cadre(string _name,int _age,char _sex,string _address,string _tele,string _major,string _post,double _wages):Person(_name, _age, _sex, _address, _tele), Student( _name, _age, _sex, _address, _tele,_major),Cadre( _name, _age, _sex, _address, _tele,_post),wages(_wages){}
void display()
{
getName();
getAge();
getSex();
getAddress();
getTele();
getMajor();
getPost();
cout<<"wages:"<<fixed<<setprecision(1)<<wages<<endl;
}
};
int main( )
{
string name, major, post, addr, tel;
int age;
char sex;
float wage;
cin>>name>>age>>sex>>addr>>tel>>major>>post>>wage;
Student_Cadre st_ca(name, age, sex, addr, tel, major, post,wage);
st_ca.display( );
cout<<endl;
string newAddr, newTel1, newTel2;
cin>>newAddr>>newTel1>>newTel2;
st_ca.setAddr(newAddr);
st_ca.Student::setTel(newTel1);
st_ca.Cadre::setTel(newTel2);
st_ca.display( );
return 0;
}