请使用“答题”菜单或使用VC6打开考生文件夹proj3
请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程文件proj3,其中声明了CDeepCopy类,它是一个用于表示动态数组的类。请编写其中的复制构造函数。
要求:
补充编制的内容写在//********333********与//********666********两行之间。不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
部分源程序如下:
/**********code.c**********/
# 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.p[0]; //显示 d 数组元素 a.p[0] 的值
cout<<"d fade away:\n"; cout<<a.p[0] //显示 a 数组元素 a.p[0] 的值
writeToFile("k:\k01\61010001\");
return 0
}
结果文件 out.dat 内容如下:
5222 d fade away:
66
/**********code.c**********/答案
n=r. n;
delete[]p;
P=new int[n];
for (int i=0; i p[i]=r. p[i]; return*this;
解析
该处的补充内容为复制构造函数的过程。复制构造函数并将函数内容一并复制到新的函数里,复制构造函数的一般格式:
<类名> : : <类名> ( const<类名>&<引用对象名> )
{
//复制构造函数
}