问答题
请使用“答题”菜单或使用VC6菜单打开考生文件夹proj2下的工程proj2,其中包含抽象类Shape的声明,以及在此基础上派生出的类Rectangle和Circle的声明,两者都有计算对象面积的函数GetArea()和计算对象周长的函数GetPerim()。 ThareothCircli78.5 ThperimeteothCircli31.4 ThareothRectangli24 ThperimeteothRectangli20 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“//**********found**********”。 源程序如下:
【正确答案】>
【答案解析】第1处:
virtual
第2处:
virtual
第3处:
itsLength(len),itsWidth(width)或
itsWidth(width),itsLength(len)
第4处
Shape *sp;
分析:由于第1、2两处后面的代码为“float GetArea()=0”及“float GetPerim()=0”这两个成员函数必为纯虚函数,在C++中,定义虚拟函数要使用“virtual”关键字,故第1、2两处应填“virtual”。
第3处的作用是利用构造函数的形参初始化类成员变量itswidth、itsLength;故第3空应填“itsWidth(width),itsLength(len)”或其等效形式;第4处由“sp=new Circle(5);”及“sp=new Rectangle(4,6);”已知sp为一指向Circle及Rectangle共同基类的指针,即sp为shape型指针,第4空为“Shape *sp;”。