使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: numbor1=a numher2=a numbcr1=a number2_b 注意:错误的语句

admin2019-01-19  32

问题 使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
    numbor1=a
    numher2=a
    numbcr1=a
    number2_b
    注意:错误的语句在//******error******的下面,修改该语句即可。
1  #include<iostream.h>
2  class CMyClass
3  {
4  public:
5    //******error******
6    friend void SetValue(CMyClass obj,char c)
7    {
8    obj.number1=c;
9    obj.number2=c;
10    }
11    //******error******
12    void SetValue(CMyClass obj,char c1,char c2)
13    {
14    obj.number1=c1;
15    obj.number2=c2;
16    }
17    void display()
18    {
19    cout<<’’number1=’’<<number1<<end1;
20    cout<<’’number2=’’<<number2<<end1;
21    }
22  private:
23    char number1,number2;
24  };
25  void main()
26  {
27    CMyClass t;
28    SetValue(t,’a’);
29    t.display();
30    //******error******
31    t.SetValue(&t,’a’,’b’);
32    t.display();
33  }

选项

答案(1)friend void SetValue(CMyClass&obj,char c) (2)void SetValue(CMyClass&obj,char c1,char c2) (3)t.SetValue(t,’a’,’b’);

解析 程序中定义了类CMyClass,含有两个成员变量char型变量number1和number2,友元SetValue()函数,成员函数SetValue()和display()数,SetValue()函数可改变number1和number2的值,display()函数在屏幕上打印number1和number2的值。
    (1)根据程序的输出结果,函数SetValue(t,’a’)执行后,输出number1和number2的值均为a,在SetValue(t,’a’)执行中改变了对象t的成员number1和number2的值,故SetValue(t,’a’)的第_个参数传递的是引用,因此第1个标识下应改为“friendvoid SetValue(CMyClass&obj,char c)”。
    (2)主函数中t.SetValue(t,’a’,’b’)后调用t的display()函数,在屏幕上打印,“numberl=a number2=b”,可知在SetValue(CMyClass obj,char c1,char c2)中改变了对象t的成员number1和number2的值,因此第一个参数传递为引用方式,故第2个标识下应改为“voidSetValue(CMyClass& obj,char c1,char c2)”。
    (3)由2可知,第3个标识下是调用函数SetValue(CMyClass& obj,char c1,char c2)函数,函数的第_个参数为引用,直接使用变量名即可,因此第3标识下的引用使用错误,应改为“t.SetValue(t,’a’,’b’);”。
转载请注明原文地址:https://kaotiyun.com/show/rgAp777K
0

最新回复(0)