使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果: (4,5) 7,8 (4,8) 注意:错误的语句在//******error******的下面,修改该语句即可。 #incl

admin2019-05-14  33

问题 使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果:
(4,5)
7,8
(4,8)
注意:错误的语句在//******error******的下面,修改该语句即可。
#include<iostream.h>
class CObj0
{
public:
CObj0(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<<")"<<endl;
}
public:
int x,y;
};
class CObj1:public CObj0
{
public:
//********error********
CObj1(int i,int j,int k):(i,j)
{
m=k;
n=1;
}
void print()
{
cout<<m<<","<<n<<endl;
}
void func()
{
move(3,5);
}
void display()
{
//********error********
print();
}
private:
int m,n;
};
void main()
{
CObj0 obj(4,5);
obj.print();
CObj1 obj1(1,3,7,8);
obj1.func();
obj1.print();
obj1.display();
}

选项

答案(1)Virtual void move(int a,int b) (2)CObj1(int i,int j,int k,int1):CObj0(i,j) (3)CObj0::print();

解析 (1)编译程序可知第l标识下有错误,此处是声明虚函数,虚函数的声明方式为:virtual<类型说明符><函数名>(<参数表>),参数表中各参数之间应该用“,”隔开,因此第1个标识下应改为“virtual void move(int a,int b)”。
(2)在主函数里“CObj1 obj1(1,3,7,8);”,可知构造函数CObj1()有四个参数,完成变量m、n、x和y的初始化,k和1赋值给m和n,i和j赋值给x和y,x和y的初始化可通过基类构造函数来完成对x和y的初始化,第2个标识下应改为CObj1(int i,int j,int k,int1):CObj0(i,j)。
(3)由程序运行结果可知标识3下调用的是基类的print()函数,而“print();”是调用的派生类的print()函数,因此此时只能通过类名来直接调用print()函数,即第3个标识下应改为“CObj0::print();”。
转载请注明原文地址:https://kaotiyun.com/show/7E8p777K
0

最新回复(0)