【发布时间】:2018-12-08 03:58:12
【问题描述】:
是否可以像这样取消引用共享指针,为其分配和分配一个新对象:
void foo()
{
std::shared_ptr<std::string> x =
std::make_shared<std::string>();
bar(*x); // is this fine?
// x == bsl::string("WHATEVER")
}
void bar(string& y)
{
y = string("whatever");
}
【问题讨论】:
-
你正在对指针管理的对象进行更改(你没有让它管理一个新对象)
-
是的,那么上面的代码是安全的吗?我最终不会修改临时或类似的东西吗?
-
是的,这一切都很好
-
顺便说一句,请考虑更多地使用
auto。重复容易出错。 -
@MartinF "修改一个临时的" 怎么样?那会很糟糕吗?
标签: c++ shared-ptr dereference