共享指针声明

时间:2015-06-24 15:48:33

标签: c++ pointers shared-ptr shared

我修改我的代码以包含共享指针而不是原始指针。以下声明是否有效?

for(//some loop//){

std::shared_ptr<foo> tmp;
/..do stuff to tmp../
vectorofpointer.push_back(tmp);

此外,一旦tmp超出范围,这会影响我的向量吗?

1 个答案:

答案 0 :(得分:2)

是的,没关系。

请参阅http://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr

  

1)默认构造函数构造一个没有托管对象的shared_ptr,即空shared_ptr

另见http://en.cppreference.com/w/cpp/memory/shared_ptr

  

shared_ptr也可能没有对象,在这种情况下,它被称为空[...]

如果你的向量包含shared_ptr元素,你仍然可以访问tmp超出范围后指向的对象,因为引用计数使对象保持活动状态。