2015-10-15 35 views
0

我正在閱讀Scott Meyrses C++,現在是關於passing-reference-to-const的部分。他說,對於用戶定義的類型,通過reference-to-const傳遞它幾乎總是很好,與內置類型不同。按值傳遞基元

我的問題是爲什麼內置類型應該通過值傳遞。爲什麼它更有效率?我認爲,他們可以進入登記冊,但這是唯一的原因嗎?

+2

通過引用傳遞或傳遞指針是一種額外的間接方式。在沒有優化的地方,有指針解引用來使用該值,而用於複製指針的內容並不比僅僅複製該值本身小。 –

回答

5

當你傳遞一個引用時,它在後面傳遞一個指針。這比通過可能非常大的整個結構更有效。

原始類型的大小與指針大小相同(最壞的情況下它們可能是原來的兩倍)。有些甚至更小 - 一個char是1個字節,而指針通常是4或8個字節。所以通過引用而不是傳遞價值本身並不能獲得效率。