填空题 使用VC6打开考生文件夹下的工程test3_1,此工程包含一个源程序文件test3_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
A:a=5
display1:a=6
display2:a=5
源程序文件test3_1.cpp清单如下:
#include<iostream.h>
Class A

public:
/**********found**********/
A ()
void printa()cout<<"A:a="<<a<<endl;
private:
int a;
/***********found**********/
class B;
;
class B

public:
/*********found**********/
void display1(A t)

(*t).a++;cout<<"display1:a="<<(*t).a<<endl;

void display2(A t)

t.a--;cout<<"display2:a="<<t.a<<end1;

;
void main()

A obj1;
B obj2;
obj1.printa();
obj2.display1(&obj1);
obj2.display2(obi1);


  • 1、
【正确答案】 1、{{*HTML*}}
(1)错误:A(){}
正确:A(){a=5;}
(2)错误:class B;
正确:friend class B;
(3)错误:void display1(At)
正确:void display1(A*t)    
【答案解析】[解析]
(1)主要考查考生对于缺省构造函数的理解,由主函数的obj1.printa()可知原缺省构造函数定义不完整;
(2)主要考查考生对于友元的理解,如果类B不是类A的友元,则类B不能直接调用类A的私有成员,只有友元类和友元函数可以访问类的所有成员;
(3)主要考查考生对于指针的概念掌握,由函数体中的使用可以看出,这里的定义应该是对象指针,指针的定义是使用*加上变量名。