是否可以取消引用共享指针,为其分配并分配一个新对象,如下所示:
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");
}
是的,这是有效的。运算符*
返回取消引用存储的(原始(指针的结果。
取消引用(原始(指针不会复制或返回临时指针:通过引用传递时取消引用指针