R.33使我感到困惑。有人可以在意进一步解释吗? “重新安置”的含义在这里似乎不起作用。 ??
R.33:使用unique_ptr&参数表示函数重设了小部件 原因以这种方式使用unique_ptr既记录并强制执行函数调用的重新语义。
注意“重置”是指“使指针或智能指针引用其他对象。”
示例 无效reseat(unique_ptr&); //“将”或“可能”重置指针 例子,不好 无效的thinko(const unique_ptr&); //通常不是您想要的
答案 0 :(得分:0)
“重置”是指“使引用或智能指针引用其他对象。”
让我们单独看一下每个函数签名。这是什么 从功能角度来看意味着什么?
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并没有增加价值。