操作题
请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
The value of member objects is 8
注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
//proj1.cpp
#include <iostream>
using namespace std;
class Member
{
public:
Member(int x) {val =x;}
int GetData() {return val;}
private:
//ERROR ******** found********
int val =0;
};
class MyClass
{
public:
// ERROR ******** found********
MyClass(int x) { data=x; }
void Print()
// ERROR ******** found********
{ cout <<'The value of member object is' <<data.val <<endl;}
private:
Member data;
};
int main()
{
MyClass obj(8);
obj.Print();
return 0;
}
【正确答案】int val; MyClass(int x):data(x){} {cout<<'The value of member object is'<<data.GetData()<<endl;}
【答案解析】[考点] 本题考查的是Member类和MyClass类,其中涉及构造函数和成员函数。 (1)主要考查考生对私有成员的掌握情况,类的私有成员只能声明而不能对其赋初值。 (2)主要考查考生对构造函数的掌握情况,data是Member类,而x是int型,因此这里使用成员列表初始化法,调用Member的构造函数初始化。 (3)主要考查考生对成员函数的掌握情况,val为私有成员,因此不能被类外函数调用。