使用VC6打开考生文件夹下的工程test41_1,此工程包含一个源程序文件test41_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为: 7 源程序文件test41_1.cpp清单如下: #include

admin2010-02-08  15

问题 使用VC6打开考生文件夹下的工程test41_1,此工程包含一个源程序文件test41_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:
   7
   源程序文件test41_1.cpp清单如下:
       #include<iostream.h>
       class myclass
       {        
         int  a, b;
       public:
         /*****************  found  *****************/
         int sum(myclass x);
         void set_ab(int i, int j);
       }:
        /**************** found ****************/
       void myclass:set_ab(int i,  int j)
       {
         a=i;
         b=j;
       }
       int sum (myclass x)
       {
         /***************** found ***************/
         x.a+x.b;
       }
       void main ( )
       {
         myclass n;
         n.set_ab (3, 4);
         cout <<sum(n)<<endl;
       }

选项

答案(1) 错误:int sum(myclass x); 正确:friend int sum(myclass x); (2) 错误:void myclass:set_ab(int i,int j) 正确:void myclass::set_ab(int i,int j) (3) 错误:x.a+x.b; 正确:return x.a+x.b;

解析 (1)函数sum中含有对于myclass类的私有数据成员a和b的操作,而普通函数没有这样的权限,所以编译器会报错,只有把sum定义成该类的友元函数,这样根据友元函数可以访问该类的所有元素的规则,就可以正确地实现该函数:
(2)函数的参数列表只能用于类的构造函数,对于构造函数,参数列表与在函数体内赋值是等价的,但是一般的类的成员函数只能使用函数体内赋值一种方法;
(3)该函数的返回值为int型,所以计算之后的结果应该使用关键字return返回主函数,return返回值可以使用括号,也可以不使用,后面可以是表达式也可以是变量或者常量。
转载请注明原文地址:https://jikaoti.com/ti/rFkiFFFM
0

最新回复(0)