使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,其输出的结果为
30
130
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include<iostream.h>
int a=10;
class TC
public:
TC()
a=b=0;
void display()
//******error******
cout<<a<<b<<end1;
void func(int a)
//******error******
a+=a;
void func2()
//******error******
a+=a;
private:
int a,b;
;
void main()
TC obj;
obj.func(3);
obj.display();
obj.func2();
obj.display();
参考答案:应改为“a+=::a;”。
解析: 成员函数display打印变量a和b的值,即cout输出a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,第1处的语句应改成“cout<<a<<b<<end1。在func(int a)中,参数a传递进来,其和成员变量a的名称一样,因此第2处的“a+=a”有歧义,从程序的运行结果来分析,TC obj声明对象obj,初始化类成员变量a和b均为0,调用func函数后输出30,说明a为3,b为0,因此这里应该是成员变量与参数a的和赋给成员变量a,正确的写法是“this—>a+=a;”。func2函数虽然没有参数,但成员变量a和全局变量a重名,第3处的“a+=a”也会有歧义,分不清楚是全局变量加倍还是类成员变量加倍或者其他情况,调用func2函数后,输出“130”,说明a为13,b为0,因此是成员变量与全局变量a的和赋给成员变量a,正确的写法是“a+=::a;”,“::a”表示是全局变量a。