我想了解返回const
引用是否有任何好處。我有一個階乘函數,通常是這樣的:我假設會有的性能提升,當我們路過const
參考C++通過Const引用並通過Const返回引用
unsigned long factorial(unsigned long n)
{
return (n == 0) ? 1 : n * factorial(n - 1);
}
,我們返回const
參考......但const
-correctness 總是混淆了我。
const unsigned long & factorial(const unsigned long& n)
{
return (n == 0) ? 1 : n * factorial(n - 1);
}
是否有效返回const
參考?此外,有人可以告訴我:這有益嗎?
當返回值超出範圍時(即在函數結束時)會發生什麼?我的猜測是參考指向無效內存。 – robinjam 2010-07-09 22:34:24
通過const引用傳遞'long'不太可能有利於按值傳遞它。一般來說,這是針對具體實現的,但在我能想到的所有體系結構中,「long」和「long」都將表示爲32位數量,或者兩者都是64位。因此,您複製相同數量的數據,但現在調用方必須計算地址(這意味着它也必須有本地數據,而不是隻保留在寄存器中),並且被調用方必須取消引用。充其量,該函數將被內聯,並且優化器將放棄參考。 – 2010-07-09 22:41:22
所以我很安全,如果我只是使返回和輸入參數常量(沒有引用,只是const值)。 – Kiril 2010-07-09 22:44:17