作者adrianshum (Alien)
看板C_and_CPP
標題Re: [問題] operator overloading
時間Wed Oct 14 10:49:04 2009
※ 引述《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
→ wk7:恩謝謝 妳回答的第一題是我剛剛搞錯了 在妳尚未回文之前有修正 10/14 11:02
→ wk7:我想知道的是這兩種方式使用上意義上的差別在哪?? 10/14 11:03
推 QQ29:這兩個不能並存耶 回傳& 就可以省去一次copy 10/14 11:27