当对象足够重以避免复制时
When is an object heavy enough so as to avoid copying?
嗯,我相信标题很简单。我读过很多次,一个人应该避免复制重物,这似乎很合理(谁会想成为一个记忆猪?问题是,什么时候应该认为一个物体很重?有多少成员?
只要您传递的对象大于指针的大小(通常在 32 位上为 4 个字节,在 64 位上为 8 个字节),那么避免复制会更有效。
是否应该通过引用/指针传递它取决于这将需要多少额外的工作,以及您将如何处理数据。如果你通过引用传递它只是为了创建一个副本并在你的函数中修改它,那么你就违背了目的。任何时候将其作为 const 按引用传递就足够了,那么这样做可能是个好主意。
但是,请注意,大多数编译器都足够智能,可以在使用优化功能编译代码时优化只读对象的复制。所以你不必真正担心它,除非它成为一个瓶颈,你可以定量地证明它。
相关文章:
- 将包含不可复制对象的对插入到映射中
- 通用参考 l 值不复制对象
- 为什么具有 2 个参数参数的构造函数接受复制对象作为 1 个参数参数?
- 为什么从引用创建共享指针会复制对象?
- 当(且仅当)对象具有复制构造函数时,如何复制对象?
- 我的程序运行良好,可以复制对象,但是当我使用复制分配(=)时,它仍然可以正常运行.为什么不给错误
- 如何复制对象
- 如何构造不可移动不可复制对象的元组?
- 不可复制对象数组的 consexpr 初始化?
- 提升::可选与标准::不可复制对象的可选
- 如何在C++中通过引用复制对象
- 从指针复制对象
- 删除浅表的复制对象和源对象
- 使用realloc可以安全地重新分配琐碎的可复制对象的存储吗
- C 返回复制对象
- 如何将智能指针作为类属性来复制对象
- 为什么在复制对象时忽略顶级常量
- std::shared_ptr 在复制对象时导致问题
- 安全复制对象的替代方案
- 当类包含boost::container::flat_set时,复制对象时出错