這些傳遞參數準則的指引斯特勞斯給出了他最新的C++的書 傳遞參數的函數:Stroustrup的在功能
[1] Use pass-by-value for small objects.
[2] Use pass-by-const-reference to pass large values that you don’t need to modify.
[3] Return a result as a return value rather than modifying an object through an argument.
[4] Use rvalue references to implement move (§3.3.2, §17.5.2) and forwarding (§23.5.2.1).
[5] Pass a pointer if ‘‘no object’’ is a valid alternative (and represent ‘‘no object’’ by nullptr).
[6] Use pass-by-reference only if you have to.
我的問題:
1)他沒有解釋他是指[1]中的「小物體」。該規則適用於內置的 類型,但我不確定用戶定義的類型。用戶定義的 類型必須以規則[1]傳遞的「小」是多少?
2)我認爲規則[3]只是一個風格問題。我錯了嗎?
3)我想知道爲什麼規則[6]。爲什麼Stroustrup討厭引用參數? :)(只是在開玩笑)
謝謝
1)沒有「硬限制」;我的一般經驗法則是,大於128字節的東西不再「小」。 2)它允許進行某些優化,所以它不僅僅是風格。 3)你的代碼的副作用越小,通常它就是「更乾淨」。請注意,這些是準則,而不是硬性規定。 – Cornstalks
@Cornstalks 1)爲什麼不直接通過const引用傳遞?並且只通過價值傳遞簡單的內置類型。 3)我現在看到阿哈。我幾年前就在使用Haskell,並且我確實意識到你說的,謝謝。 – user3111311
@ user3111311:「爲什麼不只是通過const引用傳遞?」因爲這對小型類型來說效率較低 - 不僅僅是內置類型,而且對於小型,簡單複製類類型(對於一些依賴於上下文的「小」類型值)來說效率較低。 –