问答题 使用VC6打开 下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
Number=8
注意:错误的语句在//******error******的下面,修改该语句即可。
#include<iostream.h>
class CMyClass
{
public:
//******error******
void& Get()
{
return &Number;
}
void Set(int m)
{
Number=m;
}
void display()
{
cout < < "Number=" < < Number < < endl;
}
private:
int Number;
};
void main()
{
int* p;
//******error******
//******error******
p=t.Get();
*p=8;
t.display();
}
【正确答案】
【答案解析】(1)void* Get()
(2)添加语句:CMyClass t;
(3)P=(int*) t.Get();
答案考生文件夹 [解析] 程序中定义了类CMyClass,含有一个成员变量Number,Get()返回Number的地址(指针),Set(int m)函数可改变成员变量的值,display()函数在屏幕上打印Number的值。
(1)Get()的返回的是“return &Number;”,即返回Number的地址,主函数中p为整型指针,但是“P=t.Get();”有错误,因为Get()函数返回的不是整型指针,而应该是空指针(void),空指针可强制类型转换成其他类型的指针,第1个标识下应改为“void*Get()”。
(2)由于Get()数返回空指针(void),要使p指向Get()函数的返回值,必须做强制类型转化,即第3个标识下应改为“p=(int*)t.Get();”。
(3)变量t可以使用Get()函数,说明t为CMyClass类对象。即第2个标识下应添加对象定义,故第2个标识下添加“CMyClass t;”。