已知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的]