我正在修改我的代码以包含共享指针而不是原始指针。以下声明是否有效?
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/