0
我有一个使用懒惰拷贝的类 - 当调用拷贝构造函数时,它创建浅拷贝,当调用一个方法时,它创建一个深层拷贝并添加一些更多数据。懒惰的拷贝 - 如何从浅拷贝创建深层拷贝
我被困在一部分,我应该从那个浅拷贝创建一个深层副本。
深副本应该是这样的:
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;
}
,但我不知道如何实现它那个方法。我试图创建一个临时对象,并使用*此
temp.m_count = this->m_count;...
,并在年底
*this=temp;
填满它,但它不工作。
为什么我不首先创建深度复制?因为拷贝太多,只有少数拷贝被改变,并且它们占用了太多内存。
我应该怎么做?
P.S.我被禁止在这个任务中使用STL和字符串。