【问题描述】Person类是基类有三个数据成员name(姓名),sex(性别),age(年龄)。Person的子类Teacher增加了一个数据成员title(职称)。Professor类是Teacher类的子类,增加了一个数据成员allowance(津贴)。请仔细阅读题目和给出的部分源代码以及输入输出样例,补充类的实现【输入形式】见main函数
【输出形式】对象构建过程,对象信息输出,对象析构过程。对象信息输出每个信息之间有一个空格见main函数
【样例输入】Lisa f 68 professor 8000 3
【样例输出】
Person constructed
Teacher constructed
Professor constructed
Lisa f 68 professor 8000
Professor destructed
Teacher destructed
Person destructed
#include <iostream>
#include<string>
#include<cstring>
using namespace std;
class Person
{
public:
Person(string nam,char s,int a)
{
name=nam;sex=s;age=a;
cout<<"Person constructed"<<endl;
}
//
virtual void display()
{
cout<<name<<" "<<sex<<" "<<age<<endl;
}
virtual ~Person(){cout<<"Person destructed"<<endl;}
//
protected:
string name;
char sex;
int age;
};
class Teacher:public Person
{
public:
//
Teacher(string nam,char s,int a, string t):Person(nam,s,a),title(t){cout<<"Teacher constructed"<<endl;}
~Teacher(){cout<<"Teacher destructed"<<endl;}
virtual void display()
{
cout<<name<<" "<<sex<<" "<<age<<" "<<title<<endl;
}
//
protected:
string title;//职称
};
class Professor:public Teacher
{
public:
Professor(string nam,char s,int a, string t,float aln):Teacher(nam,s,a,t),allowance(aln){cout<<"Professor constructed"<<endl;}
~Professor(){cout<<"Professor destructed"<<endl;}
void display()
{
cout<<name<<" "<<sex<<" "<<age<<" "<<title<<" "<<allowance<<endl;
}
private:
float allowance;//津贴
};
int main()
{
string name;//姓名
char sex;//性别
int age;//年龄
string title;//职称
float allowance;//津贴
int n;//类型 1.生成Person对象 2.生成Teacher对象 3.生成Professor对象
Person *p1;
cin>>name>>sex>>age>>title>>allowance>>n;//信息输入
if(n==1)
{
p1=new Person(name,sex,age);
p1->display();
delete p1;
}
if(n==2)
{
p1=new Teacher(name,sex,age,title);
p1->display();
delete p1;
}
if(n==3)
{
p1=new Professor(name,sex,age,title,allowance);
p1->display();
delete p1;
}
return 0;
}