1
A
回答
1
不,根本沒有區別。 const
只適用於本地,但任何最近的編譯器都可以確定引用是否已更改,因此它沒有區別。
考慮這種情況:
void MyClass::foo(const int& param)
{
m_myInt1 = param + 1;
m_myInt2 = param;
}
在這兩種情況下,每次訪問param
必須經歷的記憶。爲什麼?因爲param
可能別名m_myInt1
。
MyClass bar;
bar.foo(bar.m_myInt1);
的const
參考僅僅意味着param
無法通過參考被修改。您仍然可以通過其他參考進行修改(在這種情況下,通過this->m_myInt1
)。
+0
我會添加一個小記事:如果將const引用傳遞給函數,編譯器更容易將其內聯,因爲它不必處理別名和對象重新分配。 – UnknownGosu
+0
@UnknownGosu:即使引用是'const',函數也可以使用'const_cast'修改它,所以編譯器不能基於它是'const'做出任何額外的假設。 –
相關問題
- 1. PHP中的恆定非修改對象引用
- 2. WebGL的:循環索引不能與非恆定表達
- 3. MongoDB的索引和非索引性能
- 4. jQuery的持續性非事件綁定
- 5. 有限的可能非確定性狀態機持續時間
- 6. 未定義對SDL功能的引用
- 7. constexpr對非const對象的引用
- 8. 對非const對象的const引用
- 9. 引用對象的屬性
- 10. 非數字索引的性能
- 11. PHP持久性引用
- 12. doctrine2:未定義索引 - 與非默認referencedColumnName多對一不會持續實體
- 13. 對功能的undefine引用
- 14. 函數調用模糊性指針,引用和恆定的參考參數
- 15. c#對引用的引用
- 16. 爲什麼對象引用不能引用預期的對象?
- 17. 模擬恆星的引力?
- 18. 用雙引號替換所有連續的單引號對
- 19. 添加對項目的非GAC引用
- 20. 無法對非引用的庫
- 21. 熊貓非獨特索引對性能的影響是什麼?
- 22. 定義對象的「引用」
- 23. 引用非標量變量不支持
- 24. 非恆定索引到均勻陣列CG着色器
- 25. 引用自定義對象屬性
- 26. Objective C arc - 保持對類的引用
- 27. 對應用引擎1.6.4的GPE支持?
- 28. 誰持有這些對象的引用
- 29. boost deadline_timer持有對象的引用
- 30. 你如何持有對NewExpression的引用?
'const-reference'和'non-const-reference'在不同的情況下使用。如果你有保證,你的函數對象中的內容不會改變 - 如果你想改變,使用'const-refenrence' - 使用'reference'。 – ForEveR
*你認爲什麼? –
我知道使用情況,我想知道他們中的一個在性能方面是否比其他方面更好。 – Dexter