问答题 使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正main()函数中的错误,使程序的输出结果如下: Constructor. Default constructor. Areais 12 Area is 0 Area is 12 注意:错误的语句在∥********error********的下面,修改该语句即可。 #include class CRectangle { private: double length l width; public: CRectangle() { cout<<”Default constructor.\n”; } CRectangle(double 1,double W) { length=1;width=w; cout<<”Constructor.\n”; } void Set(double 1,double W) { this一>length=1; this一>width=w; } void GetArea() { cout<<”Area is”<
【正确答案】正确答案:(1)CRectangle Rect2; (2)CRectangle Rect3(Rectl); (3)Rect2.Set(0,0);
【答案解析】解析:(1)构造函数CRectangle()不带有参数,CRectangle(double l,double w)带有2个参数,在创建对象时会自动调用构造函数,但是参数必须匹配,第1个标识下定义Rect2对象时,有一个参数,而类CRectangle0中并没有重载一个参数的构造函数,编译后出错,因此第l标识下应改为“CRectangle Rect2;”。 (2)Rect3.GetArea0输出的结果和Rect1.GetArea0输出结果一致,因此对象Rect3和对象Rectl两者具有相同的length和width值,除定义Rect3对象之外没有改变Rect31的length和width值,凶此Rect3成员变量的初始化是通过拷贝构造函数类实现的,即用Rectl对象去初始化Reet3,因此第2个标识下应改为“CRecmngle Rect3(Rectl);”。 (3)Rect2.GetArea0的输出结果为0,说明Rect2的成员变量length和width值至少一个为0,而Set()函数必须有两个参数,这里Rect2.Set(0)参数不匹配,应改为“Rect2.Set(0,0);”或者“Rect2.Set(0,5)”,两个参数当中至少一个为0即可。