问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:smallersmallerSillallerlargest注意:只修改注释“//ERROR**********found**********”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include<iostream>usingnamespacestd;constintSize=4;classMyClass{public:MyClass(intx=0):value(X){}voidSet《intx){value=x;}friendvoidjudge(MyClassaobj);private:intvalue;};//ERROR**********found**********voidMyClass::judge(MyClass&obj){if(obj.value=Size)cout<<"largest"<<end1;elsetout<<"smaller"<<end1;}intmain(){MyClass*ptr=newMyClass[Size];for(inti=0;i<Size;i++){//ERROR**********found**********(ptr+i).Set(i+1);judge(*(ptr+i));}//ERROR**********found**********deleteptr;return0;}
【正确答案】正确答案:(1)void Judge(MyClass &obj) (2)(ptr+i)->Set (i + 1); (3)delete [] ptr;
【答案解析】解析:(1)主要考查考生对友元函数的掌握,由类的定义中关于Judge函数的声明可知该函数为友元函数,因此在定义时不能使用类名和作用域符。 (2)主要考查考生对指针的掌握,ptr是指针,(ptr+i)也是指针,表示指针ptr向后移动i个位置,因此在调用成员函数时要使用标识符'->'。 (3)主要考查考生对delete语句的掌握,释放指针使用delete语句,其格式为:delete[]指针;。