什么时候物体足够重以避免复制?

Mis*_*ded 5 c++ memory

好吧,我相信标题很简单.我已多次阅读过应该避免复制重物的事情,这似乎很合理(谁想成为记忆猪?).问题是,何时应将物体视为重物?有多少会员?

Mah*_*dsi 5

无论何时传递的对象大于指针的大小(通常在32位上为4个字节,在64位上为8个字节),因此避免复制会更有效.

是否应该通过引用/指针传递它取决于将要进行多少额外工作,以及您将对数据执行的操作.如果你通过引用传递它只是为了创建一个副本并在你的函数中修改它,那么你已经打败了目的.任何时候将它作为const by-reference传递就足够了,那么这样做可能是个好主意.

但请注意,大多数编译器都足够聪明,可以在使用优化编译代码时优化复制只读对象.所以你不必担心它,除非它成为一个瓶颈,你可以定量地证明它.