问答题
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义类CPoint的带有两个参数的构造函数,两个变量为x、y都为int型,且缺省值为0。请在注释//********1********后添加适当的语句。 (2)完成类CRectangle的构造函数,给pointl和point2进行赋值。请在注释//********2********后添加适当的语句。 (3)完成类CRectangle的函数GetArea0,用来计算矩形面积。请在注释//********3********后添加适当的语句。 (4)定义CRectangle类,拥有两个私有对象pointl和point2,类型为Point,请在注释//********4********后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include<iostream.h>#include<cmath>Class CPoint{public: //********1******** { x=i; y=j; } int GetX() { return x; } int GetY() { return y; }private: int x,y;};class CRectangle{public: //********2******** { } int GetArea() { //********3******** int height=pointl.GetY()-point2.GetY(); return(width*height)?width*height:一width*height; } int GetGirth() { int width=abs(point1.GetX()-point2.GetX()); int height=abs(point1.GetY()-point2.GetY()); return(2*(width+height)); }private: //********4******** CPoint point2;};int main(){ CRectangle rect(5,2,13,18); cout<<rect.GetArea()<<endl; cout<<rect.GetGirth()<<endl; return 0;}
【正确答案】正确答案:(1)添加语句:CPoint(int i=0,int j=0) (2)添加语句:CRectangle(int top,int left,int,right,int bottom):pointl(top,left),point2 (right,bottom) (3)添加语句:int width=pointl.GetX() -point2.GetX(); (4)添加语句:CPoint pointl;
【答案解析】解析:(1)在第1个标识下添加构造函数定义,该构造带有两个参数x和y的构造函数,x、y都为int型,缺省值为0,因此第1个标识下应添加CPoint(int i=0,int j=0)。 (2)第2个标识下通过Cpoint类的构造函数来完成Crectangle类成员的初始化,在函数体内没有任何函数语句,因此其初始化过程是在初始化列表里完成的,通过调用基类的构造函数来实现两个私有对象point1和point2的初始化,故第2个标识下应添加CRectangle(int top,int left,int right,int bottom):pointl(top,left),point2(right,bottom)。 (3)面积为矩形的长宽之积,因此先计算矩形的长和宽,可由两个Cpoint对象的x坐标相减计算得到,CPoint对象的X坐标为私有成员,只能通过公有接口函数调用获得,因此第3个标识下为“int width=pointl.GetX()-point2.GetX0;”。 (4)Crectangle类的成员变量为两个Cpoint对象成员pointl和point2,第4个标识下补充pointl的定义,故第4个标识下应添加“CPoint pointl;”。