這裏是基本上實現對類名爲CMyString
=賦值的代碼,代碼是正確的。關於運算符的C++訪問
CMyString& CMyString::operator =(const CMyString &str) {
if(this == &str)
return *this;
delete []m_pData;
m_pData = NULL;
m_pData = new char[strlen(str.m_pData) + 1];
strcpy(m_pData, str.m_pData);
return *this;
}
該實例通過引用傳遞,第一個'if'檢查傳入的實例是否爲自身。我的問題是:爲什麼它使用&str
來比較,而不是str
已經包含實例的地址?任何人都可以解釋這條線的工作原理嗎?
此外,我只是想確保this
包含對象的地址:這是正確的嗎?
的建議,中序進行賦值運算execption SAFTY其更好地存儲臨時指針中的m_pData在末尾刪除臨時指針,以便即使在爲m_pData = new分配內存時發生異常char [strlen(str.m_pData)+ 1];源對象的數據是安全CMyString&CMyString ::運算符=(const的CMyString&STR){ 如果(這==&STR) 返回*此; char * temp = m_pData; m_pData =新的char [strlen的(str.m_pData)+ 1]; strcpy(m_pData,str.m_pData); delete [] temp; temp = NULL; return * this; } – shivakumar 2013-04-09 06:11:31
我知道,我還想着把類似的功能,但沒有異常處理,但是這不是真的什麼,我就在這裏...但我還是謝謝你 – fiftyplus 2013-04-09 06:14:49