Re: [問題] operator overloading
: ※ 引述《adrianshum (Alien)》之銘言:
: : ※ 引述《wk7 (wk7)》之銘言:
: : 最近再複習以前沒學好的東西
: : operator overloading裡面有幾樣東西我搞混了...
: : 1. SparseMatrix& operator=(const SparseMatrix& ); -->return *this
: : 2. SparseMatrix operator=(const SparseMatrix& ); -->return *this
怎麼覺得兩個同時寫在 class 中,會 compile 不過。
想法參考自:
class A {
A method(const A&) {return *this;}
A& method(const A&) {return *this;}
};
這樣寫 compiler 會回應有錯吧。
: : 這兩者之間有甚麼差別阿??
: : 還有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,
10/14 11:02
→
10/14 11:03,
10/14 11:03
SpareseMatrix mySparseMatrix,anotherSparseMatrix;
*SpareseMatrix aSparseMatrixPointer;
mySparseMatrix = anotherSparseMatrix;
equal to
mySparseMatrix = mySparseMatrix.operator=(anotherSparseMatrix);
use the prototype :
SparseMatrix& operator=(const SparseMatrix&);
mySparseMatrix = &anotherSparseMatrix;
equal to
mySparseMatrix = mySparseMatrix.operator=(&anotherSparseMatrix);
use the prototype :
SparseMatrix& operator=(const SparseMatrix*);
mySparseMatrix = aSparseMatrixPointer;
equal to
mySparseMatrix = mySparseMatrix.operator=(aSparseMatrixPointer); // 改一下
use the prototype :
SparseMatrix& operator=(const SparseMatrix*);
以上有錯請指正 m(_@_)m
所以 Alien 大說 "沒有另外寫 operator=(SparseMatrix&) 的話"
mySparseMatrix = anotherSparseMatrix; // 不行
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.9.2
推
10/14 12:09, , 1F
10/14 12:09, 1F
→
10/14 12:09, , 2F
10/14 12:09, 2F
→
10/14 12:10, , 3F
10/14 12:10, 3F
→
10/14 12:10, , 4F
10/14 12:10, 4F
→
10/14 12:14, , 5F
10/14 12:14, 5F
※ 編輯: csihcs 來自: 211.74.9.2 (10/14 12:17)
→
10/14 12:17, , 6F
10/14 12:17, 6F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 6 篇):