gpt4 book ai didi

c++ - 将 unique_ptr 作为引用参数或 const unique_ptr 引用传递

转载 作者:行者123 更新时间:2023-11-27 23:38:08 25 4
gpt4 key购买 nike

我在 std::vector<std::unique_ptr<MyObject>> 中维护了一些对象池我将这个池中的对象传递给一个函数 void process(...) .我不清楚将这些对象之一传递给 process() 的最佳方式功能。如果我理解我读过的不同答案和文章,最好将其作为常规引用传递,如下所示: void process(MyObject& buffer);

根据我的理解,这是更可取的,因为:

  1. 我传递的缓冲区应该保证在 process() 的整个生命周期中都存在。方法,因为它是由 unique_ptr 的所有者调用的,即调用方法
  2. 调用者也可以传递堆栈分配的对象,因此不会对该方法的客户端施加分配限制
  3. 如果 ptrs 可以是 nullptr 那么建议将原始指针传递给 process()方法代替

这种理解是否正确或最佳指导是什么?以下是我读过的引用资料: Passing const unique_ptr reference as parameter

https://www.chromium.org/developers/smart-pointer-guidelines

https://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/

最佳答案

是的,出于您给出的原因,这是一种明智的做法。

关于c++ - 将 unique_ptr 作为引用参数或 const unique_ptr 引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com