33,311
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<string>
using namespace std;
class Person{
friend ostream & operator<<(ostream &os,Person &);
friend istream & operator>>(istream &is,Person &);
public:
virtual ostream & output(ostream&)=0;
virtual istream & input(istream&)=0;
protected:
string name;
bool Sex;
int age;
};
class Student:virtual public Person{
friend ostream & operator<<(ostream &os,Student &);
friend istream & operator>>(istream &is,Student &);
public:
Student(string n="",string nu="",string c="",string m="",bool sex="male",int a=0):stunumber(nu),stuclass(c),stumajor(m){
name=n;age=a;Sex=sex;
}
ostream & output(ostream&);
istream & input(istream&);
protected:
string stunumber,stuclass,stumajor;
};
class Teacher:virtual public Person{
friend ostream & operator<<(ostream &os,Teacher &);
friend istream & operator>>(istream &is,Teacher &);
public:
Teacher(string n="",string t="",string s="",bool sex="male",int a=0):title(t),salary(s){
name=n;age=a;Sex=sex;
}
ostream & output(ostream&);
istream & input(istream&);
protected:
string title ,salary ;
};
class StuTech:public Student,public Teacher{
friend ostream & operator<<(ostream &os,StuTech &);
friend istream & operator>>(istream &is,StuTech &);
public:
StuTech(string n="",string nu="",string c="",string m="",string t="",string s="",bool sex="male",int a=0){}
ostream & output(ostream&);
istream & input(istream&);
};
ostream & operator<<(ostream &os,Person &p){
return p.output(os);
}
istream & operator>>(istream &is,Person &p){
return p.input(is);
}
ostream & operator<<(ostream &os,Student &s){
return s.output(os);
}
istream & operator>>(istream &is,Student &s){
return s.input(is);
}
ostream & operator<<(ostream &os,Teacher &t){
return t.output(os);
}
istream & operator>>(istream &is,Teacher &t){
return t.input(is);
}
ostream & operator<<(ostream &os,StuTech &u){
return u.output(os);
}
istream & operator>>(istream &is,StuTech &u){
return u.input(is);
}
ostream & Student::output(ostream &os){
os<<"学生姓名:"<<name<<",性别:"<<(Sex?"男":"女")<<",年龄:"<<age<<",学号:"<<stunumber<<",班级:"<<stuclass<<",专业:"<<stumajor<<endl;
return os;
}
istream & Student::input(istream &is){
//if(is==cin){
cout<<"学生姓名";is>>name;
cout<<"性别(1-男,0-女)";is>>Sex;
cout<<"年龄";is>>age;
cout<<"学号";is>>stunumber;
cout<<"班级";is>>stuclass;
cout<<"专业";is>>stumajor;
/*}
else{
is>>name;
is>>Sex;
is>>age;
is>>stunumber;
is>>stuclass;
is>>stumajor;
}*/
return is;
}
ostream & Teacher::output(ostream &os){
os<<"教师姓名:"<<name<<",性别:"<<(Sex?"男":"女")<<",年龄:"<<age<<",职称:"<<title<<",工资:"<<salary<<endl;
return os;
}
istream & Teacher::input(istream &is){
//if(is==cin){
cout<<"教师姓名";is>>name;
cout<<"性别(1-男,0-女)";is>>Sex;
cout<<"年龄";is>>age;
cout<<"职称";is>>title;
cout<<"工资";is>>salary;
/*}
else{
is>>name;
is>>Sex;
is>>age;
is>>title;
is>>salary;
}*/
return is;
}
ostream & StuTech::output(ostream &os){
os<<"教师姓名:"<<name<<",性别:"<<(Sex?"男":"女")<<",年龄:"<<age<<",职称:"<<title<<",工资:"<<salary<<endl;
return os;
}
istream & StuTech::input(istream &is){
//if(is==cin){
cout<<"教师姓名";is>>name;
cout<<"性别(1-男,0-女)";is>>Sex;
cout<<"年龄";is>>age;
cout<<"学号";is>>stunumber;
cout<<"班级";is>>stuclass;
cout<<"专业";is>>stumajor;
cout<<"职称";is>>title;
cout<<"工资";is>>salary;
/*}
else{
is>>name;
is>>Sex;
is>>age;
is>>stunumber;
is>>stuclass;
is>>stumajor;
is>>title;
is>>salary;
}*/
return is;
}
int main (){
Person *pArray[3];
pArray[0]=new Student;
pArray[1]=new Teacher;
pArray[2]=new StuTech;
for(int i=0;i<3;i++)
cin>>*pArray[i];
for(int i=0;i<3;i++)
cout<<*pArray[i];
return 0;
}