【发布时间】:2013-04-06 01:00:57
【问题描述】:
我有一个使用惰性复制的类 - 当调用复制构造函数时,它会创建浅拷贝,而当调用一个方法时,它会创建深拷贝并添加更多数据。
我被困在应该从浅拷贝创建深层拷贝的地方。
深拷贝应如下所示:
m_count = copy.m_count;
k = copy.k;
m_record = new TRecord * [k*SIZE];
char * temp;
for(int i=0;i<m_count;i++) {
m_record[i] = new TRecord;
temp = new char[12];
strcpy(temp, copy.m_record[i]->Id);
m_record[i]->Id = temp;
temp = new char[strlen(copy.m_record[i]->Name) + 1];
strcpy(temp, copy.m_record[i]->Name);
m_record[i]->Name = temp;
temp = new char[strlen(copy.m_record[i]->Surname) + 1];
strcpy(temp, copy.m_record[i]->Surname);
m_record[i]->Surname = temp;
}
但我不知道如何实现它。我试图创建一个临时对象并用 *this 填充它
temp.m_count = this->m_count;...
最后
*this=temp;
但它不起作用。
为什么我不首先创建深拷贝?因为副本太多,而其中只有少数被更改,并且占用了太多内存。
我该怎么做?
附:我被禁止在这个任务中使用 STL 和字符串。
【问题讨论】:
标签: c++ deep-copy shallow-copy