使用VC6打开考生文件夹下的proj1工程目录内的proj1.dsw文件,其中在编辑窗口内显示的主程序文件中定义有Xabc类和主函数main。在程序文本中位于每行”//ERROR*********found*********下面的一行有错误,请加以更正。
更正后程序的输出为:57
注意:只允许修改每个"//ERROR*********found*********下面的一行语句,不允许改动程序中的其他任何内容。
#include<iostream>
usng namespace std;
class Xabc{
int*a;int n;
public:
Xabc(int aa[],int nn):n
(nn){
a=new int[n];
for(int i=0;i<n;i++)
//ERROR*****found******
aa[i]=a[i];
}
int GetA(~nt i)COnSt{return a[i];}
int SumA(int n);
~xabc(){delete[]a;}
};
int Xabc::SumA(int n){
int s=0;
for(int j=0;j<n;j++)
s+=a[j];
return s;
}
int main(){
int a[6]={2,5,8,3,6,9};
Xabc x(a,6);
a[3]=19;
int d=0;
for(int i=0;i<6;i++)
//ERROR*****found******
d+=x.a[i];
//ERROR*****found******
int f=SumA(5);
cout<<d+f<<endl;
return 0;
}
【正确答案】(1)a[i]=aa[i];
(2)d+=x.GetA(i);
(3)int f=x.SumA(5);
【答案解析】(1)Xabc的构造函数需要使用形参aa为成员指针a赋值,函数体中,首先动态分配n个连续的整型变量的内存空间,并将内存空间的首地址赋给a,然后通过for循环,使用数组aa为a的n个元素的赋值。
(2)x是类Xabc的对象,成员a在定义时没有指定访问标号,默认为private成员,所以这里不能通过x对象直接访问a,应该通过公有成员函数GetA()来访问。
(3)SumA()函数是类Xabc的公有成员函数,需要通过对象来引用,而不能直接引用。