當我加上矩陣B和C時,此函數返回一個常量矩陣A.但是接下來我不應該能夠改變那個常量矩陣,例如A = A + D;
,但是我是。有人可以向我解釋爲什麼這可能嗎?C++中的重載+運算符和const的使用
const Matrix operator+(const Matrix&) const;
當我加上矩陣B和C時,此函數返回一個常量矩陣A.但是接下來我不應該能夠改變那個常量矩陣,例如A = A + D;
,但是我是。有人可以向我解釋爲什麼這可能嗎?C++中的重載+運算符和const的使用
const Matrix operator+(const Matrix&) const;
A + D
不改變A
創建一個新的Matrix
實例,但這裏的問題是,你分配回A
。
賦值運算符變化A
,不是您的加法運算符。 const
屬性無法擴展到完整表達式。
那麼在特定的操作符中const的用法是什麼?我在谷歌搜索的一些幻燈片上看到了它,我想知道他們爲什麼選擇使用const – Samu
它會返回一個常量對象,但它會立即傳遞給賦值運算符,該賦值運算符將左側對象視爲非常量並進行更改它。 –
@πάνταῥεῖ這次重複可能有點牽強。我不是要求重新打開,也不會「反對」你 –