问答题 使用VC6打开 下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并且使程序输出的结果为:
a=7,b=0
a=8,b=10
注意:错误的语句在//******error******的下面,修改该语句即可。
#include<iostream.h>
class CObj
{
public:
//******error******
friend void func(CObj&,int,int);
void display()
{
//******error******
cout < < "a=" < < a<", b=" < < < < b < < endl;
}
private:
int a,b;
};
void func(CObj& obj,int t)
{
obj.a=t;
obj.b=0;
}
void func (CObj & obj, int t, int j)
{
obj.a=t;
obj.b=j;
}
void main()
{
//******error******
CObj obj1
func(obj1,7);
obj1.display();
func(obj1,8,10);
obj1.display();
}
【正确答案】
【答案解析】(1)添加语句:friend void func(CObj&,int);
(2)cout < < "a=" < < a < < ",b=" < < b < < endl;
(3)CObj obj1;
答案考生文件夹 [解析] 程序中定义了类CObj,其有两个成员变量a和b,通过友元函数func()可改变a和b的值,display()成员函数显示a和b的值。
(1)标识1处是声明一个友元函数,友元函数是在类声明中由关键字friend修饰的非成员函数,由friend void func(CObj&,int,int)可知,函数func()是CObj类的友元,由程序后面的具体实现可知该函数重载了,已经声明了友元函数friend void func(CObj&,int,int),另外一个友元函数func(CObj& obj,int t)没有声明,因此第1个标识下应添加“friend void func(CObjj&,int);”。
(2)display()函数打印类成员变量a和b的值,cout流中的数据是用流插入运算符“ < < ”顺序加入的,因此“ < < < < ”不正确,第2个标识下应改为“cout < < "a=" < < a < < ",b=" < < b < < endl;”。
(3)标识3处是声明类对象,对象声明格式为:<类名><对象名>(<参数表>);,对象声明语句是一个完整的语句,应该以“;”结尾,因此第3个标识下应改为“CObj obj1;”。