2015-06-08 41 views
1

我想知道可能是什麼原因提供一個公共訪問方法返回引用,而不是公開的成員。 QPoint有方法int& rxint& ry,讓我直接操縱座標。返回參考私人與公共會員

我猜implentation類似於此:

public: 
    int& rx(){return x;} 
private: 
    int x; 

我至今唯一的想法是:通過保持成員私人和「唯一」提供參考,類仍然可以改變到爲其座標使用不同的數據類型,同時仍然「以某種方式」將引用返回給int。然而,這個「莫名其妙」總是需要一個int成員。一旦參考資料泄露,會員實際上不能再改變。所以這不可能是原因。

related question接受的答案建議,而不是返回參考的公衆成員。

返回引用而不是公開成員(在一般情況下)是否有任何好處?或者這只是Qt特定的(QPoint特定?)設計?

編輯:QPoint in Qt4

+2

它是C#包裝調用到C++,因爲這樣的功能可以使顯示爲性質是有用的。 – AndyG

回答

2

一般而言,返回由參考符的成員儘可能多的封裝爲具有公共部件,也不是鼓勵。

我想當一個類足夠簡單(普通的舊數據 - 預計接口和數據都不會改變)時,可以讓所有成員公開。返回非const引用具有相同的效果。所有封裝都被破壞了。

關於你的問題,沒有任何好處。

除了我的答案,類似的答案已經給出here

+0

現在當我想到它時,它有點顯而易見:一個參考變量是(粗言穢語)只是一個別名。因此它確實沒有任何區別。 AndyG可能是正確的C#屬性。然而,afaik Qt屬性需要QObject作爲超類,而QPoint並非如此。 – user463035818

+0

這個答案假設'QPoit :: rx()'的執行與OP發佈的相同。 –

+0

爲什麼只有Qt實現者纔會知道這一點。這是一個非常簡單的課程,我想這與向後兼容性有關。我已閱讀他們的文檔,似乎是一個蹩腳的藉口...一些Qt api實現者可能會發表評論。看看增強點,例如... –