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

admin2015-05-30  26

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:
    30
    130
    注意:错误的语句在//********error********的下面,修改该语句即可。
    1    #include
    2    int a=10;
    3  class cobj
    4    {
    5   public:
    6    CObj()
    7    {
    8    a=b=0;
    9    }
    10     void display()
    11    {
    12    //********error********
    13    cout<    14    }
    15    void func(int a)
    16    {
    17    //********error********
    18    a+=a;
    19    }
    20    void func2()
    21    {
    22    //********error********
    23    a+=a ;
    24    }
    25   private:
    26    int a,b ;
    27    };
    28  void mein()
    29  {
    30    CObj obj;
    31    obj.func(3);
    32    obj.display();
    33    obj.func2();
    34    obj.display();
    35  }

选项

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

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

最新回复(0)