Advertisement

C++ 中的 Copy Elision

阅读量:

Copy Elision

  • 我们都讨厌复制吗?
    • 如何避免复制?

    • 强制性 Copy Elision

    • 非强制性 Copy Elision

    • 总结

我们都讨厌 copy ?

关于 copy(拷贝)是我们 C++ 开发者讨论的焦点之一,在 C++ 中避免不必要的 copy 态度更是能避则避。不必要的拷贝不仅会影响程序性能还会导致一系列潜在的问题例如 C++ 的 Rule-of-Three 就是一个值得深入探讨的话题。

如何避免 copy ?

在C++的世界里,一个对象可以采用两种不同的传递方式.其中一种是_value passing_的方式,另一种则是_address/reference passing_的方式,这种 latter approach特别适用于处理pointer或reference类型的对象.通常情况下,当我们探讨数据传输的方式时,都是以将参数导入到函数体内为基础进行分析.今天,我想深入探讨_copy elision_这一概念,C.E.,即所谓的"拷贝消除".这一主题不仅涉及参数传输的问题,还与返回值的处理密切相关.需要注意的是,我对这一主题展开论述的内容限于_C++ 17版本之前_.

CE 的触发条件存在差异,并主要分为 Mandatory Elision of Copy 和 _Non-Ma

全部评论 (0)

还没有任何评论哟~