2012-10-16 58 views
2

所以,我只是通過返回* this指針來調用級聯成員函數調用。我明白了它是如何機械地工作的,但它看起來像是在實現函數時花費大量時間,以獲得使用點運算符對一個線路鏈函數調用的較小能力。我相信除了簡單地縮短成員函數調用之外,還有其他一些好處,但實際上沒有關於這個主題的很多信息。谷歌的前幾頁只提供了關於如何實現級聯函數調用的說明,而沒有提到爲什麼,如何或在何處使用這種技術。任何人都有一些有用的鏈接可能會涵蓋更深入的主題?謝謝。使用級聯成員函數會帶來什麼好處

+1

不,就是這樣,真的。更簡單的鏈接。 –

+2

投票結束的人:這不是一個合適的問題? –

+0

你不需要在你所有的功能上做到這一點。但是有一些功能可以將呼叫連鎖起來。 – Wyzard

回答

4

當操作鏈接有意義時,好處是該類用戶的外觀更好看。例如:

rect.left(10).top(5).right(50).bottom(40); 

這可能是更好的閱讀比任:

// longer code 
rect.left(10); 
rect.top(5); 
rect.right(50); 
rect.bottom(40); 

或者:

// reader should remember order of parameters 
rect.move_to(10, 5, 50, 40); 
1

有時,非常難得我想,但我看到了這樣的使用(一般在單元測試):

  • 它增加了一定的靈活性與結構物體(你不必遵循的參數順序或添加大量重載構造)
  • 是方便的表示邏輯OR(例如用於設置標誌)
相關問題