我有两个功能,如下图所示提取模板类;赋值运算符不总是叫
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