使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: 30 130 注意:错误的语句在//*****error******的下面,修改该语句即可。 #

admin2017-11-27  38

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:
    30
    130
    注意:错误的语句在//*****error******的下面,修改该语句即可。
#include
int a=10;
class CObj
{
public:
    CObj()
    {
    a=b=0;
    }
    void display()
    {
    //*****error******
    cout<    )
    void func(int a)
    {
    //*****error******
    a+=a;
    }
    void func2()
    {
    //*****error******
    a+=a;
    )
private:
    int a,b;
};
void main()
{
    CObj obj;
    obj.func(3);
    obj.display();
    obj.func2();
    obj.display();
}

选项

答案(1)cout<a+=a; (3)a+=::a;

解析 (1)成员函数display()打印变量a和b的值,即cout输出a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,因此第1个标识下应改成cout<(2)在func(int a)中,参数a传递进来,其和成员变量a名字一样,因此第2个标识下的“a+=a”有歧义,从程序的运行结果来分析,CObj obi声明对象obj,初始化类成员变量a和b均为0,调用func函数后输出30,说明a为3,b为0,因此这里应该是成员变量与参数a的和赋给成员变量a,正确的写法是“this->a+=a;”。
(3)func2()函数虽然没有参数,但是成员变量a和全局变量a重名,第3个标识下“a+=a”也会有歧义,分不清楚是全局变量加倍还是类成员变量加倍或者其他情况,调用func2()函数后,输出“130”,说明a为13,b为0,因此是成员变量与全局变量a的和赋给成员变量a,正确的写法是“a+=::a;”,“::a”表示是全局变量a。
转载请注明原文地址:https://kaotiyun.com/show/6DAp777K
0

随机试题
最新回复(0)