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

admin2015-07-20  24

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
    number1=a
    number2=a
    number1=a
    number2=b
    注意:错误的语句在  ∥********error********的下面,修改该语句即可。
#include
class CMyClass
{
publiC:
   ∥********error********
    friend void SetValue(CMyClass
obj,char c)
    {
    obj.number1=c;
    obj.number2=c;
    }
     ∥********error********
    void SetValue(CMyClass obj,
char c1,char c2)
    {
    obj.numberl=cl;
    obj.number2=c2;
    }
    void display()
    {
    cout<<“numberl=”<<    cout<<“nHmber2=”<<    }
private:
    char numberl,number2;
};
void main()
{
    CMyClass t ;
    SetValue(t‘a’);
    t.display();
    ∥********error*******
    t.SetValue(&t,‘a’,‘b’);
    t.di splay();
}

选项

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

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

最新回复(0)