题库 题库

【简答题】

综合应用题
使用VC6打开考生文件夹下的工程kt12_3。此工程包含一个kt12_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不是正数则输出错误信息并退出,否则申请int型的大小为i的空间,然后把i赋值给类的数据成员num。请在注释“//**1**”之后添加适当的语句。
(2)完成类ARRAY的拷贝初始化构造函数,注意解决重复删除的问题,请在注释“//**2**”之后添加适当的语句。
(3)完成类ARRAY的重载的运算符函数[],参数i为int型,如果i超界则输出错误信息并退出,否则把下标为i的元素返回,请在注释“//**3**”之后添加适当的语句。
(4)完成类ARRAY的重载的运算符函数=,同样需要注意解决重复删除的问题,不能只是简单的赋值,请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt12_3.cpp清单如下:
#include
#include
classARRAY
{ private:
int*p,num;
public:
ARRAY(){p=newint[10],num=10;}
ARRAY(inti)
{ //**1**
{ cout<<"错误!数组长度应为正。\n";
exit(0); }
p=newint[i];
num=i; }
ARRAY(constARRAY&a);
int&operator[](inti);
~ARRAY(){deletep;}
ARRAY&operator=(constARRAY&a);
friendARRAYoperator+(ARRAY&a,ARRAY&b);
friendostream&operator<<(ostream&os,ARRAY&a); };
ARRAY::ARRAY(constARRAY&a)
{ //**2**
for(inti=0;i<NUM;I++)< p>
p[i]=a.p[i]; }
int&ARRAY::operator[](inti)
{ //**3**
{ cout<<"越界访问!";
exit(0); }
returnp[i]; }
ARRAY&ARRAY::operator=(constARRAY&a)
{ num=a.num;
p=newint[num];
for(inti=0;i<NUM;I++)< p>
p[i]=a.p[i];
//**4** }
ARRAYoperator+(ARRAY&a,ARRAY&b)
{ if(a.num!=b.num)
{ cout<<"数组长度不相同!"<<ENDL;< p>
exit(0); }
ARRAYt(a.num);
for(inti=0;i<A.NUM;I++)< p>
t.p[i]=a.p[i]+b.p[i];
returnt; }
ostream&operator<<(ostream&os,ARRAY&a)
{ inti=0;
for(;i<A.NUM;I++)< p>
{ cout<<A.P[I]<<'';< p>
if(!((i+1)%10))cout<<>
returnos; }
voidmain()
{ ARRAYa(3);
a[0]=a[1]=a[2]=3;
cout<<'a'<<A<<ENDL;< p>
ARRAYb(a);
cout<<'b'<<B<<ENDL;< p>
ARRAYc(2);
c=a+b+b;
cout<<'c'<<C<<ENDL;< p>
c=((b=(a+b))+c);
cout<<'a'<<A<<'B'<<B<<'C'<<C<<ENDL;< p>
a[7]=3;
cout<<>

参考答案

(1)if(i<=0)
(2)num=a.num;
p=new int[num];
(3)if(i>=num||i<0)
(4)return *this;

相关试题