CPP准则:重新发布智能指针

时间:2018-10-15 01:45:57

标签: unique-ptr

R.33使我感到困惑。有人可以在意进一步解释吗? “重新安置”的含义在这里似乎不起作用。 ??

R.33:使用unique_ptr&参数表示函数重设了小部件 原因以这种方式使用unique_ptr既记录并强制执行函数调用的重新语义。

注意“重置”是指“使指针或智能指针引用其他对象。”

示例 无效reseat(unique_ptr&); //“将”或“可能”重置指针 例子,不好 无效的thinko(const unique_ptr&); //通常不是您想要的

1 个答案:

答案 0 :(得分:0)

来自CPP guideline

  

“重置”是指“使引用或智能指针引用其他对象。”


来自modernescpp.com

  

让我们单独看一下每个函数签名。这是什么   从功能角度来看意味着什么?

void share(std::shared_ptr<Widget> shaWid)
     

我是函数主体的一生,是该函数主体的共享所有者   小部件。在功能主体开始时,我将增加   参考柜台在函数结束时,我将减少   参考柜台因此,只要我   使用它。

     
void reseat(std::shared_ptr<Widget>& shaWid)
     

我不是该小部件的共享所有者,因为我不会更改   参考柜台。我不保证小部件会保留   在执行我的函数时还活着,但是我可以重新安装   资源。非常量左值引用更像是:我借用了   资源并可以重置它。

     
void mayShare(const std::shared_ptr<Widget>& shaWid)
     

我只借用资源。我可以延长其使用寿命吗   资源,也不能重置资源。老实说,您应该使用   指针(Widget *)或引用(Widget&)作为参数,   因为使用std :: shared_ptr并没有增加价值。