使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果:
(4,5)
7,8
(4,8)
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include<iostream.h>
class TC0
public:
TC0(int i,int j)
x=i;
y=j;
//******error******
virtual void move(int a;int b)
X+=a;
y+=b;
void print()
cout<<"("<<x<<","<<y<<")"<<end1;
public:
int x,y;
;
class TC1:public TC0
public:
//******error******
TC1(int i,int j,int k):(i,j)
m=k;
n=1;
void print()
cout<<m<<","<<n<<end1;
void func()
move(3,5);
void display()
//******error******
print();
private:
int m,n;
;
void main()
TC0 obj(4,5);
obj.print();
TC1 obj1(1,3,7,8);
obj1.func();
obj1.print();
obj1.display();
参考答案:应改为“TCO::print();”。
解析: 由题可知第1处是声明虚函数,虚函数的声明方式为“virtual<类型说明符><函数名>(<参数表>)”,参数表中各参数之间应该用“,”隔开,因此第1处的语句应改为“virtual void move(int a,int b)”。在主函数的语句“TC1 obj1(1,3,7,8);”中,可知构造函数TC1有4个参数,完成变量m、n、x和y的初始化,k和1赋值给m和n,i和j赋值给x和y,x和y的初始化可通过基类构造函数来完成对X和Y的初始化、第2处的语句应改为“TC1(int i,int j,int k,int l):TC0(i,j)”,第3处调用的是基类的print函数,而“print();”是调用的派生类的print函数,因此此时只能通过类名来直接调用print函数,即第3处应改为“TC0::print();”。