使用VC6打开考生文件夹下的工程test22_1,此工程包含—个源程序文件test22_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为: 6/15 3/4 9/19 源程序文件test22_1.cpp清单如下: #include<iostream.h> class Franction {int nume;int deno; public:Franction FranAdd(const Franction& x){ this->nume+=x.nume; this->deno+=x.deno; /****************found*******************/ return this;}void InitFranction() {nume=0; deno=l;}void InitFranction(int n, int d) {nume=n; deno=d;}void FranOutput() {cout<<nume<<’/’<<deno<<endl;} }; void main() {Franction *a=new Franction;Franction *b=new Franction;a->InitFranction(6,15);b->InitFranction(3,4);a->FranOutput();b->FranOutput();Franction c; /****************found*******************/c->InitFranction(); /****************found*******************/c=a->FranAdd(b);c. FranOutput(); }
参考答案:
解析:(1)错误:return this; 正确:return*this; (2)错误:c->InitFranction(); 正确:c.InitFrancfion(); (3)错误:c=a->FranAdd(b); 正确:c=a->FranAdd(*b); (1)主要考查考生对于this指针和函数返回值的掌握,它是指向正在活动的对象自己的指针,该函数应该返回Franction类型的对象,即应该使用"*"; (2)主要考查考生对于对象和对象指针的使用,对象指针调用成员函数使用符号“->”,而对象调用成员函数使用“.”; (3)主要考查考生对于函数参数使用的掌握,FranAdd()使用对象的引用作为形参,所以实参应该是对象本身。