c++ - 共享指针声明

标签 c++ pointers shared-ptr shared

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

for(//some loop//){

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

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

最佳答案

是的,没关系。

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

1) Default constructor constructs a shared_ptr with no managed object, i.e. empty shared_ptr

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

A shared_ptr may also own no objects, in which case it is called empty […]

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

关于c++ - 共享指针声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031174/

相关文章:

C++ 异常抛出 : read access violation. 这是 nullptr

我可以使用 C 指针结构函数更改此 C 代码吗?

c++ - 在 C++ 中将一个 vector 与另一个 vector 一起排序

c - 指针算术 : warning: assignment makes pointer from integer without a cast [enabled by default]

c++ - 在 C++ 中将指向前向声明的类的指针转换为其真正的基类是否安全?

c++ - 递归函数中的 shared_ptr 赋值导致段错误

c++ - 通过线程本地存储访问 shared_ptr

c++ - 使用 dynamic_pointer_cast 时无法动态转换

c++ - 什么是内斜接计算?

c++ - 在 Visual Studio 中通过 printf() 打印 std::string