作者LayerZ (無法如願)
看板Programming
標題[請益] 關於C++中的"+"的問題
時間Sat Dec 27 21:19:16 2008
可能對大大來說這問題太過簡單,不過還請不吝賜教
小弟最近在學C++中的Overloading,於是去實做字串的.operator+
題目為 s1 = s2 + s3
以下是我做的operator+ function
const String &String::operator+( const String &right )
{
.
.
.
String tempString(tempPtr);
delete [] tempPtr;
return tempString; // enables cascaded calls
} // end function operator+
可是在實做出錯後發現 s1 = s2 + s3是先算+運算子再算=運算子
所以我回傳的tempString就隨著+法運算子的結束跟著function一起毀滅了
想問的是 在正常的a = b + c中 c++是如何在+運算子跟=運算子中間傳遞數值的...
--
明知道這是不可能的願望 卻如同烙印的爪痕沁入大地
假如 可以實現的話 將我的存在剝奪 捨棄也無妨
祈禱著 祈求著 幻想也好
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.73.162
→ james732:String &String::operator+ 把 & 去掉? 59.104.62.118 12/27 21:28
推 legendmtg:yes operator+不該傳回reference 61.217.144.162 12/27 21:35
→ LayerZ:居然這麼簡單就解決了Orz...真是厲害 59.115.73.162 12/27 21:42
→ LayerZ:所以 operator+算完以後,回傳的值會直接被 59.115.73.162 12/27 21:43
→ LayerZ:=運算子接到並且運算0.0... 59.115.73.162 12/27 21:43
→ LayerZ:之前完全想錯方向, 感謝~ 59.115.73.162 12/27 21:44
推 godfat:不建議作成 member function, 而且不能回傳 220.135.28.18 12/27 21:46
→ godfat:local variable 的 reference 是基本概念 220.135.28.18 12/27 21:47
→ godfat:我記得 g++ 會有 warning 220.135.28.18 12/27 21:47