请使用“答题”菜单或使用VC6打开考生文件夹proj2下的工程proj2,其中声明了CDeep-Copy类,它是一个用于表示动态数组的类。请编写其中的复制构造函数。
要求:补充编制的内容写在//********333********与//********666********两行之间,不得修改程序的其他部分。
注意:程序最后已经将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//源程序
#include"CDeepCopy.h"
CDeepCopy::~CDeepCopy()delete[]p;
CDeepCopy::CDeepCopy(int k)n=k; p=new int[n]; //构造函数实现
CDeepCopy::CDeepCopy(const CDeepCopy&r) //复制构造函数
//********333********
//********666********
int main()
CDeepCopy a(2),d(3);
a.p[0]=1; d.p[0]=666; //对象a、d数组元素的赋值
CDeepCopy b(a);
a.p[0]=88;
cout<<b.p[0]; //显示内层局部对象的数组元素
cout<<d.[0]; //显示d数组元素a.[0]的值
cout<<"d fade away; \n";cout<<a.p[0]; //显示a数组元素a.p[0]的值
//writeToFile("K:\\bl0\\61000101\\");
return 0:
参考答案:int*s=new int[r.n];
for(int i=0;i<r.n;i++)s[i]=r.p[i];
this->p=s;
this->n=r.n:
解析: 完成数组的深层次复制,首先新建一个多态数组s,并将传递进来的形参r对象的other成员数组p利用循环赋值给s,最后将赋值后的s和r.n赋值给本对象的p和n成员。