请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2。此工程中定义了一个人员类Person,然后派生出学生类Student和教授类Professor。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:

admin2015-06-27  31

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2。此工程中定义了一个人员类Person,然后派生出学生类Student和教授类Professor。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:
MynameisZhang.
mynalIleisWangandmyG.P.A.is3.88.
MynaIgleisLi.Ihave8publications.
注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//**********found**********”。
#include
usingnamespacestd;
classPerson{
public:
//**********found**********
________{name=NULL;}
Person(char*s)
{
name=newchar[strlen(s)+1];
strcpy(name,s);
}
~Person()
{
if(name!=NULL)delete[]name;
}
//**********found**********
________Disp()//声明虚函数
{
cout<<"Mynameis"<}
voidsetName(char*s)
{
name=newchar[strlen(s)+1];
strcpy(name,s);
}
protected:
char*name;
};
classStudent:publicPerson{
public:
//**********found**********
Student(char*s,doubleg)
________{}
voidDisp()
{
cout<<"mynameis"<"andmyG.P.A.is"<}
private:
floatgpa;
};
classProfessor:publicPerson{
public:
voidsetPubls(intn){publs=n;}
voidDisp()
{
cout<<"Mynameis"<}
private:
intpubls;
};
intmain()
{
//**********found**********
________;
Personx("Zhang");
P=&x;P->Disp();
Studenty("Wang",3.88);
P=&y;P->Disp();
Professorz;
z.setName("Li");
z.setPubls(8);
p=&z;P->Disp();
return0;
}

选项

答案(1)Person() (2)virtual void (3): Person(s), gpa(g) (4)Person* p

解析 (1)主要考查考生对构造函数的掌握情况,构造函数使用成员列表初始化name。
(2)主要考查考生对虚函数的掌握情况,虚函数使用关键字virtual,参考派生类中Disp函数可知函数返回类型为void。
(3)主要考查考生对构造函数的掌握情况,使用成员列表初始化。
(4)主要考查考生对指针的掌握情况,由语句:p = &x; p->Disp();可知,要定义p为Person类的指针。
转载请注明原文地址:https://kaotiyun.com/show/fDNp777K
0

最新回复(0)