Re: [問題] operator overloading
※ 引述《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
10/14 11:27, 3F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 6 篇):