问题 填空题

使用VC6打开考生文件夹下的工程test3_1,此工程包含一个源程序文件test3_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:A:a=5display1:a=6display2: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)错误: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)主要考查考生对于指针的概念掌握,由函数体中的使用可以看出,这里的定义应该是对象指针,指针的定义是使用*加上变量名。

多项选择题
单项选择题