2016-10-30 42 views
0

當我加上矩陣B和C時,此函數返回一個常量矩陣A.但是接下來我不應該能夠改變那個常量矩陣,例如A = A + D;,但是我是。有人可以向我解釋爲什麼這可能嗎?C++中的重載+運算符和const的使用

const Matrix operator+(const Matrix&) const; 
+0

@πάνταῥεῖ這次重複可能有點牽強。我不是要求重新打開,也不會「反對」你 –

回答

0

A + D不改變A創建一個新的Matrix實例,但這裏的問題是,你分配回A

賦值運算符變化A,不是您的加法運算符。 const屬性無法擴展到完整表達式。

+0

那麼在特定的操作符中const的用法是什麼?我在谷歌搜索的一些幻燈片上看到了它,我想知道他們爲什麼選擇使用const – Samu

+0

它會返回一個常量對象,但它會立即傳遞給賦值運算符,該賦值運算符將左側對象視爲非常量並進行更改它。 –