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