Passing Qt classes by const reference

Ash*_*hot 4 c++ qt reference copy-on-write

It's known that Qt classes use copy-on-wite when passing by value. So copy isn't done until its needed. I have seen many times passing Qt classes by const reference when only needed read-only access to object. Why do people pass const QString& instead of simple QString if in both cases no copy is done?

Pav*_*hov 9

这是因为魔法需要付出代价.QString不复制整个字符串,但它会计算引用.许多QString副本可能会降低程序的速度.如果const QString&足以满足您的需求,为什么不使用它呢?它仍然更快.


Lol*_*4t0 6

写入时复制并不意味着,该对象不会被复制.它只表示在写入时进行深度复制,即实际数据将在写入时复制.制作副本的主要复杂性当然是数据复制.但只是制作浅层副本涉及一些操作,如引用计数.

结果,通过引用传递仍然比制作浅拷贝更便宜.