2012-01-30 58 views
0

我有以下功能/構造函數/方法(我不知道它到底是什麼)運營商重新分配功能/建設回報是什麼?

List<T>& List<T>::operator=(const List<T> &x) 

其中List是一個鏈表,這是應該做的任務。但是,我不確定這是否應該返回。 Eclipse一直告訴我,控制達到非void函數的結束;然而,我不確定究竟是什麼。我是C++的新手,所以如果可能的話保持簡單的答案。謝謝:)

+0

你不返回任何東西。你需要返回一些東西(在這種情況下,可能是新的List對象)。 – 2012-01-30 04:55:27

+0

另請閱讀[什麼是複製和交換成語](http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom),其中介紹了編寫自定義作業的最佳做法運營商。 – 2012-01-30 05:05:42

+0

'operator =='不是構造函數,因爲您分配給的對象已經存在。 – fredoverflow 2012-01-30 10:14:02

回答

3

通常,賦值運算符返回對象本身的引用,所以只需使用return *this;結束您的函數。有賦值表達式有受讓人的價值可以讓你寫的東西像a = b = c;if ((a = get_data()) == c)

+0

謝謝!這工作完美! – Nosrettap 2012-01-30 04:58:44

1

這是一個重載=運營商的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 
+0

不幸的是,我只能給1個接受的答案,否則我會給你一個。然而,我投票給你表示我的讚賞,反正...乾杯 – Nosrettap 2012-01-30 05:19:43

+0

@Nosrettap:不用擔心:)總是接受答案,以最好的方式幫助你解決你的問題。 – 2012-01-30 05:22:03