取消引用临时std :: shared_ptr?
是否安全示例:
std::shared_ptr<std::string> create_shared_string()
{
return std::shared_ptr<std::string>(new std::string("hello"));
}
std::cout << *create_shared_str() << std::endl;
我担心,一旦取消引用完成,shared_ptr就会被销毁,引用计数器会变为零,因此返回的原始指针不再安全。
答案 0 :(得分:7)
what is the lifetime of C++ temporary object
在这种情况下,返回的std::shared_ptr
在std::cout << std::endl;
完成之前不会被破坏,因此您可以安全地取消引用它。