Re: [問題] operator overloading

看板C_and_CPP作者 (Alien)時間16年前 (2009/10/14 10:49), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/6 (看更多)
※ 引述《wk7 (wk7)》之銘言: : 最近再複習以前沒學好的東西 : operator overloading裡面有幾樣東西我搞混了... : 1. SparseMatrix& operator=(const SparseMatrix& ); -->return *this : 2. SparseMatrix operator=(const SparseMatrix& ); -->return this : 這兩者之間有甚麼差別阿?? : 還有2為什麼是return this? 那不是一個指標嗎? 大概是你搞錯了, 應該不會 return this 你這兩個 overload 要 return 的都是 SparseMatrix, 除非你碰巧有一個 ctor 是 SparseMatrix(SparseMatrix*) 我記得好像 compiler 會自動幫你用這 ctor (不肯定) : 另外以1為例 : SparseMatrix& operator=(const SparseMatrix& sm){ : this.xxx=sm.xxx; : } : 看過的範例的參數都是用 type&,假如我用type*呢??像下面這樣 : SparseMatrix& operator=(const SparseMatrix* sm ){ : this.xxx=sm->xxx; : } : 能不能過阿..? : 謝謝 可以, 只是你用起來的時候會, = 右邊需要一個 SparseMatrix pointer 而已, 即是, 如果你沒有另外寫 operator=(SparseMatrix&) 的話: mySparseMatrix = anotherSparseMatrix; // 不行 mySparseMatrix = &anotherSparseMatrix; // ok mySparseMatrix = aSparseMatrixPointer; // ok -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82

10/14 11:02, , 1F
恩謝謝 妳回答的第一題是我剛剛搞錯了 在妳尚未回文之前有修正
10/14 11:02, 1F

10/14 11:03, , 2F
我想知道的是這兩種方式使用上意義上的差別在哪??
10/14 11:03, 2F

10/14 11:27, , 3F
這兩個不能並存耶 回傳& 就可以省去一次copy
10/14 11:27, 3F
文章代碼(AID): #1ArJmX9Z (C_and_CPP)
文章代碼(AID): #1ArJmX9Z (C_and_CPP)