问答题
请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程prog1。其中位于每个“//ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
v1=23;v2=42
注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。
#include <iostream>
using namespace std;
class MyClass
{
int v1;
static int v2;
public:
MyClass(int v) : vl (v) {}
int getValue() const { return v1; }
static int getValue(int dummy)
{
// ERROR ********** found**********
return v1;
}
};
// ERROR ********** found**********
int MyClass.v2 = 42;
int main()
{
MyClass obj (23);
// ERROR ********** found**********
int v1 = obj.v1;
int v2 = MyClass::getValue(0);
cout << "v1 = " << v1 << "; v2 = "<< v2 << endl;
return 0;
}
【正确答案】(1)return MyClass::v2;
(2)int MyClass::v2=42;
(3)int v1=obj.getValue();
【答案解析】[考点] 本题考查的是MyClass类,其中涉及静态数据成员、构造函数和成员函数。
[解析] (1)主要考查考生对静态成员函数的掌握情况,根据函数定义:static int getValue(int dummy)可知,函数要求返回一个静态整型值。
(2)主要考查考生对静态成员的掌握情况,给静态成员赋值要使用作用域符“::”。
(3)主要考查考生对成员函数的掌握情况,由于v1是类的私有成员,故不能被main函数直接调用。