取消引用共享指针并分配给它

Mar*_*n F 6 c++ shared-ptr dereference

是否可以取消引用共享指针,为它分配和分配一个新对象,如下所示:

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");
}
Run Code Online (Sandbox Code Playgroud)

vll*_*vll 7

是的,这是有效的。运算符*返回取消引用存储的(原始)指针的结果。

取消引用(原始)指针不会复制或返回临时:通过引用传递时取消引用指针