我有以下功能/構造函數/方法(我不知道它到底是什麼)運營商重新分配功能/建設回報是什麼?
List<T>& List<T>::operator=(const List<T> &x)
其中List是一個鏈表,這是應該做的任務。但是,我不確定這是否應該返回。 Eclipse一直告訴我,控制達到非void函數的結束;然而,我不確定究竟是什麼。我是C++的新手,所以如果可能的話保持簡單的答案。謝謝:)
我有以下功能/構造函數/方法(我不知道它到底是什麼)運營商重新分配功能/建設回報是什麼?
List<T>& List<T>::operator=(const List<T> &x)
其中List是一個鏈表,這是應該做的任務。但是,我不確定這是否應該返回。 Eclipse一直告訴我,控制達到非void函數的結束;然而,我不確定究竟是什麼。我是C++的新手,所以如果可能的話保持簡單的答案。謝謝:)
通常,賦值運算符返回對象本身的引用,所以只需使用return *this;
結束您的函數。有賦值表達式有受讓人的價值可以讓你寫的東西像a = b = c;
和if ((a = get_data()) == c)
等
謝謝!這工作完美! – Nosrettap 2012-01-30 04:58:44
這是一個重載=
運營商的List<T>
類,它應該返回到類類型的引用。返回參考允許返回值作爲左值,並允許其使用在鏈接調用,如:
a = b = c;
你應該返回一個*this
。
它是什麼解釋:
List<T>& List<T>::operator = (const List<T> &x)
^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ <------------- Parameter being passed to =
Return Type | | |
| | |<------------- operator being overloaded
| Keyword operator
Class whose operator is being overloaded
不幸的是,我只能給1個接受的答案,否則我會給你一個。然而,我投票給你表示我的讚賞,反正...乾杯 – Nosrettap 2012-01-30 05:19:43
@Nosrettap:不用擔心:)總是接受答案,以最好的方式幫助你解決你的問題。 – 2012-01-30 05:22:03
你不返回任何東西。你需要返回一些東西(在這種情況下,可能是新的List對象)。 – 2012-01-30 04:55:27
另請閱讀[什麼是複製和交換成語](http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom),其中介紹了編寫自定義作業的最佳做法運營商。 – 2012-01-30 05:05:42
'operator =='不是構造函數,因爲您分配給的對象已經存在。 – fredoverflow 2012-01-30 10:14:02