gpt4 book ai didi

C++ 传递 std::unique_ptr 对象作为函数参数引用的正确方法

转载 作者:太空狗 更新时间:2023-10-29 19:43:20 30 4
gpt4 key购买 nike

我有一个 std::unique_ptr<T>对象和一个采用 T& 的库函数作为参数。这个函数会变T对象数据。

传递 std::unique_ptr<T> 的更好方法是什么?那个功能?上面的代码是否正确?有更好的方法吗?

#include <iostream>
#include <string>
#include <memory>

class Test {

public:
std::string message = "Hi";
};

void doSomething(Test& item)
{
item.message = "Bye";
}

int main()
{
std::unique_ptr<Test> unique = std::unique_ptr<Test>(new Test());

std::cout << unique->message << " John." << std::endl;

doSomething(*unique.get());

std::cout << unique->message << " John." << std::endl;
}

最佳答案

您不需要调用get,只需取消引用:

doSomething(*unique);

最好传递对存储对象的引用,而不是通过引用传递 std::unique_ptr,因为对象的生命周期和存储不需要传递给每个对象使用该对象的函数。

关于C++ 传递 std::unique_ptr 对象作为函数参数引用的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063614/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com