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和字符串。