问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程pmjl,此工程中含有一个源程序文件pmj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Thevalueofmemberobjectsis8注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include<iostream>usingnamespacestd;ClaSsHember{public:Hember(intx){val=x;}intGetData(){returnval;}private://ERROR********found********intval=0;};classHyClass{public://ERROR********found********HyClass(intX){data=x;}voidPrint()//ERROR********found********{cout<<"ThevalueOfmemberobjectis"<<data.val<<end1;}private:Hemberdata;};intmain(){HyClassobj(8);obj.Print();return0;}
【正确答案】正确答案:(1)int val; (2)MyClass(int x) : data(x) {} (3){ cout<< "The value of member object is "<< data.GetData()<< endl; }
【答案解析】解析:(1)主要考查考生对私有成员的掌握情况,类的私有成员只能声明而不能对其赋初值。 (2)主要考查考生对构造函数的掌握情况,data是Member类,而x是int型,因此这里使用成员列表初始化法,调用Member的构造函数初始化。 (3)主要考查考生对成员函数的掌握情况,val为私有成员,因此不能被类外函数调用。