问答题 使用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 h)
{
x+=a;
y+=b;
}
void print()
{
court<<"("<<x<<:,:<<y<<")"<<endl;
}
public:
int X,Y;
};
class TC1:public TC0
{
public:
//******error******
TC1(int i,int j,int k):(i,j)
{
m=k;
n=l;
}
void print()
{
cout<<m<<","<<n<<endl;
}
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();
}
【正确答案】
【答案解析】(1)应改为“virtual void move(int a,int b)”。
(2)应改为“TC1(int i,int j,int k,int l):TC0(i,j)”。
(3)应改为“TC0::print();”。
答案考生文件夹 [解析] 由题可知第1处是声明虚函数,虚函数的声明方式为“virtual<类型说明符><函数名>(<参数表>)”,参数表中各参数之间应该用“,”隔开,因此第1处的语句应改为“virtual void move(int a,int b)”。在主函数的语句“TC1 obj1(1,3,7,8);”中,可知构造函数TC1有4个参数,完成变量m、n、x和y的初始化,k和l赋值给m和n,i和j赋值给x和y,x和y的初始化可通过基类构造函数来完成对x和y的初始化,因此第2处的语句应改为“TC1(int i,intj,int k,int l):TC0(i,j)”。第3处调用的是基类的print函数,而“print();”是调用的派生类的print函数,因此此时只能通过类名来直接调用print函数,即第3处应改为“TC0::print();”。