2013-07-14 152 views
9

我正在查看一些開源的源代碼,我注意到對於某些方法,而不是使用void作爲返回類型,他們使用了該類的引用。對象引用vs一個方法的空值返回類型

例子:

class Object 
{ 
private: 
    float m_x; 
public: 
    Object(); 
    Object& setX(float x) 
    { 
     m_x = x; 
     return *this; 
    } 
}; 

通常情況下,我會寫這樣相同的功能:

class Object 
{ 
private: 
    float m_x; 
public: 
    Object(); 
    void setX(float x) 
    { 
     m_x = x; 
    } 
}; 

有沒有使用一個比其他任何優勢?

回答

8

是的,返回引用有一些優點。在返回引用時,您可以繼續處理返回的引用並將多個函數調用鏈接在一起。例如,如果有一個setY功能太多,你可以這樣做:

object.setX(5).setY(10); 

返回參考並不真的有缺點,但允許一些美好的事情。它可以用來創建流暢的接口,解決C++中缺少命名參數(如果需要)等問題。

相關閱讀:

+0

非常感謝您的回答。我沒有意識到你可以用C++來做到這一點。 – Xplane

+5

這種風格被稱爲[「方法鏈接」](http://en.wikipedia.org/wiki/Method_chaining)或[「流暢界面」](http://martinfowler.com/bliki/FluentInterface.html)。 –

相關問題