我正在查看字符串類的賦值運算符的一些代碼,並且有一些概念我不明白。字符串賦值運算符C++
1)的參數是一個常數,而是價值最終得到改變,我認爲常量不能得到改變?
2)您傳遞字符串參數的地址,然後在if語句您再次訪問地址,不能你離開了&符號,因爲只是用「權」的地址應該已經被訪問?
String& String::operator=(const String& right) //why is const passed is a new value gets assigned?
{
if (this != &right) // Cant this be if(this != right)
{
delete[] buffer; // Get rid of old buffer len = right.length();
buffer = new char[len + 1];
for (int i = 0; i < len; i++)
buffer[i] = right[i];
buffer[len] = '\0';
}
return *this;
}
不是指針只是一個內存地址?所以不會這!!=只是比較兩個內存地址? – user2076774
'this'是一個指向調用'operator ='的字符串的指針。 'right'是String的一個* const引用。因此'this!= right'會嘗試比較一個指向String的指針與const String。你必須用'&'來獲取地址 – Alec
是不是在參數中傳遞的地址?不只是一個字符串,但地址? – user2076774