问答题 请使用VC6或使用【答题】菜单打开考生文件夹pmjl下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Constructorcalled.Thevalueis10Maxnumberis20Destructorcalled.注意:只能修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include<iostream>usingnamespacestd;classMyClass{public://ERROR**********found**********voidMyClass(inti){value=i;cout<<"Constructorcalled."<<end1;}intMax(intx,inty){returnX>y?X:y;)//求两个整数的最大值//ERROR**********found**********intMax(intx,inty,intz=0)//求三个整数的最大值{if(x>y)returnx>z?x:z;elsereturny>z?y:z;}intGetValue()const{returnvalue;}~MyClass(){cout<<"Destructorcalled."<<end1;}private:intvalue;};intmain(){MyClassobj(10);//ERROR**********found**********cout<<"Thevalueis"<<value()<<end1;cout<<"Maxnumberis"<<obj.Max(10,20)<<end1;return0;}
【正确答案】正确答案:(1)MyClass(inti) (2)intMax(intx,inty,intz) (3)cout<<"Thevalueis"<
【答案解析】解析:(1)考查构造函数,构造函数前不加void或其他任何类型名,直接使用MyClass(inti)即可。 (2)主要考查函数重载,在intMax(intx,inty){returnx>y?x:y;}中两个形参变量都是int型,而语句intMax(intx,inty,intz=0)的前两个形参也都是int型,第三个形参定义默认值,那么这两个Max函数在调用时它们的参数个数和参数类型都一样,因为函数重载要求形参类型或形参个数不同,所以要把intz=0改为intz,才能构成函数重载。 (3)主要考查成员函数的调用,因为value是私有成员,所以不能被类外函数直接调用,而且value()的用法也是错误的,可以使用成员函数obj.GetValue()得到value的值。