mez*_*hic 3 c++ smart-pointers shared-ptr c++11
我有一堂课,其中包含vector<shared_ptr<T>>:
using SharedItems = std::vector<std::shared_ptr<Item>>;
class LargeLift
{
public:
SharedItems& getItems()
{
return _items;
}
void setSharedItems(SharedItems& items)
{
_items = items;
}
private:
SharedItems _items;
};
Run Code Online (Sandbox Code Playgroud)
然后,我执行以下操作:
LargeLift b;
{
LargeLift a;
// Gets populated
SharedItems& items = a.getItems();
b.setSharedItems(items);
}
// Variable a is now out of scope
SharedItems& items2 = b.getItems();
Run Code Online (Sandbox Code Playgroud)
给定a超出范围,最后一行是否有效?
该代码将引用传递到setSharedItems,但SharedItems _items;不是引用,因此将_items = items;拷贝items到_items。a._items与有所不同b._items,所以淡出b后就可以a了。由于已b复制了所有shared_ptrs,因此引用计数尚未达到零,并且所有指针仍将是好的。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |