我有一个使用延迟复制的类 - 当调用复制构造函数时,它会创建浅拷贝,而当调用一个方法时,它会创建深拷贝并添加更多数据。
我被困在我应该从那个浅拷贝创建一个深拷贝的地方。
深拷贝应如下所示:
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;
但它不起作用。
为什么我不首先创建深拷贝?因为有这么多副本,而其中只有少数被更改,而且它们占用了大量内存。
我该怎么做?
PS 我被禁止在这个任务中使用 STL 和字符串。