问答题
请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1。程序中位于每个“//ERROR****ound****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:value=63number=1注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#include<iostream>usingnamespacestd;classMyClass{int*P;constintN;public://ERROR**********found**********MyClass(intval):N=1{P=newint;*p=val;}//ERROR**********found**********~MyClass(){delete*p;)friendvoidprint(MyClass&obj);};//ERROR**********found**********voidMyClass::print(MyClass&obj){cout<<"value="<<*(obj.P)<<end1;cout<<"number:"<<obj.N<<end1;}intmain(){MyClassobj(63);print(obj);return0;}
【正确答案】正确答案:(1)MyClass(intval):N(1) (2)~MyClass(){delete[]p;} (3)voidprint(MyClass&ob;)
【答案解析】解析:(1)主要考查考生对构造函数的掌握,在这里不能使用赋值语句。 (2)主要考查考生对析构函数的掌握,析构函数的delete语句要使用标识符“[]”,即delete[]p;。 (3)主要考查考生对友元函数的掌握,友元函数并不属于类,因此定义时前面不用加类名和作用域符号。