#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class P{
protected:
string name;
public:
P(string s) { this->name = s;}
virtual void print()
{
cout<<"Person "<<name<<endl;
}
};
class S:public P{
protected:
int num;
public:
S(string s,int i) :P(s)
{
this->num = i;
}
void print()
{
cout<<"Student "<<name<<" "<<num<<endl;
}
};
class T:public P{
protected:
int year;
public:
T(string s,int i):P(s)
{
this->year = i;
}
void print()
{
cout<<"Teacher"<<" "<<name<<" "<<year<<endl;
}
};
class G:public S{
protected:
string r;
public:
G(string s,int i,string a):S(s,i)
{
this->r = a;
}
void print()
{
cout<<"Graduate "<<name<<" "<<num<<" "<<r<<endl;
}
};
void f(P *r)
{
r->print() ;
}
int main()
{
int i,n,num;
cin>>n;
P *p[n];
string s,a,b,c;
for(i = 0;i < n;i++)
{
cin>>s;
if(s=="Person")
{
cin>>a;
p[i] = new P(a);
}
else if(s=="Student")
{
cin>>a>>num;
p[i] = new S(a,num);
}
else if(s=="Graduate")
{
cin>>a>>num>>b;
p[i] = new G(a,num,b);
}
else if(s=="Teacher")
{
cin>>a>>num;
p[i] = new T(a,num);
}
}
char s1[20];
cin>>s1;
while(strcmp(s1,"exit"))
{
int m=atoi(s1);
f(p[m]);
cin>>s1;
}
return 0;
}
问题 J: oop实习-10. 虚函数
于 2023-03-27 14:51:53 首次发布