2014-01-07 117 views
1

我想知道哪一個更優化通過對象指針訪問類的成員變量(因爲我通過朋友函數概念訪問它)或使用getter和一個類的setter方法。訪問成員變量是最佳的或訪問成員函數

+0

你可以發佈一些代碼來顯示你想要比較的東西嗎? 「通過對象指針訪問類的成員變量」不是很清楚。 – juanchopanza

回答

0

對我來說,最好的是一個內聯獲取器。

inline int GetValue() const {return Value;} 

順便說一句,你可以看看this answer

0

通常情況下,你會寫getter和setter內聯,所以應該沒有開銷。即使有單獨的定義,一個好的編譯器也應該通過整個程序優化來內聯這些調用。

如果情況並非如此,配置文件並在您做出任何決定之前查看性能是否受到實際影響。

請注意,訪問來自外部的成員(直接來自friend甚至getters和setter)會中斷封裝。 friend選項將此限制爲特定類別,因此WRT稍好。如果您必須訪問這些成員,請使用friend。如果你有很多朋友,最好和getter/setter一起(至少你有一個訪問點,對吧)。如果表現是一個問題(可衡量),請與公衆成員一起討論。

+0

嗨可以給我一些分析鏈接,我是新的優化部分,如果你能分享,我會非常感謝:) – add2c

+0

@ add2c取決於你使用的平臺。只是谷歌「分析C++應用程序在」 –

+0

我只有一個朋友的那個類,實際上這個類有一些其他成員屬於不同的類,所以我想利用朋友和間接訪問這個下一級別的成員(屬於第三類) – add2c