使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
Number=8
注意:错误的语句在//******error******的下面,修改该语句即可。
1 #include< iostream.h >
2 class CMyClass
3 {
4 public:
5 //******error******
6 void&Get()
7 {
8 return&Number;
9 }
10 void Set(int m)
11 {
12 Number=m;
13 }
14 void display()
15 {
16 cout< < ''Number=''< < Number< < end1;
17 }
18 private:
19 int Number;
20 };
21 void main()
22 {
23 int* p;
24 //******error******
25
26 //******error******
27 p=t.Get();
28 *p=8;
29 t.display();
30 }
【正确答案】(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:”。