使用VC6打开考生文件夹下的工程test14_1,此工程包含一个源程序文件test14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下: member1=5member2=5 member1=7member2=9

admin2009-01-15  26

问题 使用VC6打开考生文件夹下的工程test14_1,此工程包含一个源程序文件test14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下:
   member1=5member2=5
   member1=7member2=9
   源程序文件test14_1.cpp清单如下:
   #include<iostream.h>
   class My Class
   {
   /************** found *****************
   friend void setMember(MyClass myObj,char meml)
   {
       myObj.member1=mem1;
       myObj.member2=mem1;
       cout<<"member1="<<myObi.member1<<" member2="<<myObj.member2<<endl;
   }
   /************** found ***************/
   void setMember(MyClass& myObj,char mem1,char mem2)
   {
       myObj.member1=mem1;
       myObj.member2=mem2;
       cout<<"member1:"<<myObj.member1<<"member2="<<myObj.member2<<endl;
   }
   private:
       char member1;
       char member2;
   };
   void main()
   {
      MyClass theObj;
   /************** found ****************/
   theObj.setMember(theObj,’5’);
   theObj.setMember(theObj,’7’,’9’);
   }

选项

答案(1)错误:friend void setMember(MyClass myObj,char mem1) 正确:friend void set Member(MyClass & myObj,char mem1) (2)错误:void setMember(MyClass & myObj,char mem1,char mem2) 正确:friend void setMembe (MyClass & myObj,char mem1,char mem2) (3)错误:theObj.setMember(theObj,’5’); theObj.setMember(theObj,’7’,’9’); 正确:setMember(theOebj,’5’); setMember(theObj,’7’,’9’);

解析 (1)主要考查考生对于友元函数定义的掌握,应该使用引用调用才能改变该对象的成员值;
(2)主要考查考生对于友元函数重载的掌握,因为前面已经有了同名函数,很明显这个函数也应该为友元函数,所以关键字friend声明;
(3)主要考查考生是否会使用友元函数,调用友元函数和普通函数的方法一样,不需要使用对象访问。
转载请注明原文地址:https://kaotiyun.com/show/3KID777K
0

最新回复(0)