问答题
请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示动态数组的类。请编写其中的复制构造函数。要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//CDeepCopy.h#include<iostream>#include<string>usingnamespacestd;classCDeepCopy{public:intn;//动态数组的元素个数int*p;//动态数组首地址CDeepCopy(int);~CDeepCopy();CDeepCopy(constCDeepCopy&r);//复制构造函数};voidwriteToFile(char*);//main.cpp#include"CDeepCopy.h"CDeepCopy::~CDeepCopy(){delete[]p;}CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}//构造函数实现CDeepCopy::CDeepCopy(constCDeepCopy&r)//复制构造函数{//********333********//********666********}intmain(){CDeepCopya(2),d(3);a.P[0]=1;d.P[0]=666;//对象a,d数组元素的赋值{CDeepCopyb(a);a.P[0]=88;cout<<b.P[0];//显示内层局部对象的数组元素}cout<<d.P[0];//显示d数组元素a.P[0]的值cout<<"dfadeaway;\n";tout<<a.p[0];//显示a数组元素a.P[0]的值writeToFile("");return0;}
【正确答案】
正确答案:n = r.n; p = new int[n]; for (int index = 0; index < n; index++) p[index] = r.p[index];
【答案解析】
解析:主要考查考生对拷贝构造函数的掌握,拷贝构造函数要复制动态数组,应先使用new分配空间,然后使用循环语句逐个复制,注意这里不能使用strcpy函数复制,因为p是整型动态数组。
提交答案
关闭