我有兩個功能,如下圖所示提取模板類;賦值運算符不總是叫
template<class TYPE, class ARG_TYPE>
int MyClassT<TYPE, ARG_TYPE>::Add(ARG_TYPE newElement)
{
TYPE Element = newElement; <--- TYPE operator= not called, shallow copy
'
'
}
和
template<class TYPE, class ARG_TYPE>
void MyClassT<TYPE, ARG_TYPE>::SetAt(int nIndex, ARG_TYPE newElement)
{
,
,
m_pData[nIndex] = newElement; <--- TYPE operator= is called, deep copy
'
'
}
爲什麼第一種情況導致淺拷貝,但在深拷貝第二種情況?我假設複製構造函數在第一種情況下被替換,但不明白爲什麼。
我有一個拷貝構造函數,但它有增加了第二個參數,因此沒有被用作默認的拷貝構造函數。必須重新閱讀這些日子之一,太久了。 – 2011-02-17 11:26:52