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

Dereferencing a shared pointer and assigning to it

像这样取消引用共享指针、分配和分配新对象是否可以:

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");
}

是的,这是有效的。 Operator * return 取消引用存储的(原始)指针的结果。

解除对(原始)指针的引用不会生成副本或return临时指针:dereferencing a pointer when passing by reference