unique_ptr<T>的构造函数接受指向T类型的对象的原始指针(因此,它接受T*)。
我所了解的是: - 当其超出作用域时,`temprenderer` 会被销毁; - 临时的 `std::unique_ptr` 使用原始指针进行初始化; - 虽然 `std::unique_ptr` 不允许复制,但通过值返回是可以的; - 实质上,当其超出作用域时,临时的 `std::unique_ptr` 也会被销毁; - 现在我们持有该临时唯一指针的副本。 我的问题...
attachActor(std::unique_ptr<Tony>&&) { // take the unique_ptr by r-value reference, // and then don't move from it, leaving the // original intact } 第20.8.1 节第 4 段。 此外,u(unique_ptr 对象)可以根据请求将所有权转移到另一个唯一指针 u2。完成此类转让后,以下后置条件成立: --...
std::unique_ptr安全地提供了独特的所有权语义。 但是,这并不排除非拥有指针的需要。 std::shared_ptr有一个非拥有对手, std::weak_ptr。 原始指针作为std::unique_ptr的非拥有对象来操作。 我倾向于遵循的规则是:如果被调用者没有使用生命/所有权,不要将其传递给智能指针; 相反,传入一个原始的C ++参考(...
Tony& Movie::addTony() { Tony *newTony = new Tony; std::unique_ptr<Tony> tony(newTony); attachActor(std::move(tony)); return *newTony; } 我想知道我是否可以这样做: Tony& Movie::addTony() { std::unique_ptr<Tony> tony(new Tony); attachActor(std::move(tony)); return *tony....