已知Qt類在傳遞值時使用copy-on-wite。所以直到需要時才複製。當只需要對對象的只讀訪問時,我曾多次看到通過const引用傳遞Qt類。爲什麼人們通過const QString&
而不是簡單QString
,如果在這兩種情況下都沒有複製完成?通過const引用傳遞Qt類
2
A
回答
6
這是因爲魔術帶有價格。 QString不會複製整個字符串,但會計算引用。許多QString的拷貝可能會減慢程序速度。如果const QString&
足夠滿足您的需求,爲什麼不使用它?它仍然更快。
3
複製寫入並不意味着該對象不會被複制。這隻意味着深層複製將寫入,即實際數據將在寫入時被複制。製作副本的主要複雜性當然是數據複製。但只是製作淺拷貝涉及一些操作,如引用計數。
結果,通過引用仍然比製作淺拷貝便宜。
相關問題
- 1. 通過引用傳遞const值的C++
- 2. 通過const引用傳遞的C++
- 3. 通過類的const引用
- 4. 通過值或通過引用const傳遞std :: chrono :: duration?
- 5. 是否更好地通過引用對非const傳遞引用進行const傳遞?
- 6. 通過引用傳遞值類型
- 7. 通過引用傳遞父級PHP類
- 8. C++通過引用傳遞類對象?
- 9. C++類只能通過引用傳遞
- 10. 通過引用傳遞類實例
- 11. 通過const引用傳遞一個對象?
- 12. 通過const引用複製傳遞C++對象構造函數
- 13. 它通過const引用傳遞shared_pointer線程嗎?
- 14. C++通過Const引用並通過Const返回引用
- 15. 通過引用傳遞與值傳遞
- 16. 通過引用傳遞C++
- 17. C++通過引用傳遞?
- 18. cpp通過引用傳遞
- 19. PHP通過引用傳遞?
- 20. Java通過引用傳遞
- 21. C++通過引用傳遞
- 22. 通過引用傳遞流
- 23. JFrame通過引用傳遞
- 24. 通過引用傳遞LPCWSTR
- 25. Java通過引用傳遞
- 26. Qt的:信號時隙通通過const引用
- 27. 嘗試引用與const成員通過引用傳遞時刪除的函數
- 28. 通過引用傳遞引用?
- 29. Java是通過值傳遞還是通過引用傳遞?
- 30. 引用傳遞[C++],[Qt的]