[英]How to make a deep copy of this constructor?
我制作了這個構造函數,我需要對它進行深層復制。 我真的不明白深層復制的含義。 我知道它會創建一個具有自己的動態內存的對象的獨立副本,但我不明白需要什么。 我也不確定如何實際實現深拷貝。 有什么建議么?
這是我的構造函數,我需要深入復制:任何人都可以提供一些語法幫助,如骨架?
template<class t_type>
inline ALIST<t_type>::ALIST()
{
t_type value;
capacity=10;
DB = new t_type[capacity];
count=capacity;
cout<<"Enter value: ";
cin.clear();
cin>>value;
for(int i=0; i<capacity; i++)
{
DB[i]=value;
}
}
使用深層副本,以便您可以復制對象具有的所有信息,然后在不更改原始文件的情況下更改副本。 從廣義上講,淺拷貝只會復制指針本身,但仍指向相同的信息。 如果您不小心,這可能會導致數據意外更改。
可以從游戲中給出一個例子。 假設你有一個策略游戲,敵人士兵擁有盔甲,健康等個人屬性。假設游戲從文本文件中讀取這些屬性,並在每次創建敵方士兵時分配屬性。 而不是從文本文件中反復讀取所有信息或將文本文件保留在內存中(通常比其對象形式大),具有原型對象池,這些對象是在加載階段從同一文本文件創建的,可能是一個更好的解決方案。 當需要敵方士兵時,您可以通過將其傳遞給新對象的構造函數或工廠模式從原型對象創建它。 在構造函數(或工廠類)中,您肯定需要深層復制並且要小心,創建所有對象而不是為具有單個對象分配指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.