当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C++在函数参数上传递std::unique_ptr对象作为引用的正确方法》经验,为你挑选了2个好方法。

我有一个std::unique_ptr对象和一个库函数T&作为参数.此功能将更改T对象数据.

传递std::unique_ptr给该函数的更好方法是什么?以上代码是否正确?有更好的方法吗?

#include 
#include 
#include 

class Test {

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

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

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

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

     doSomething(*unique.get());

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

TartanLlama.. 8

你不需要打电话get,只需要取消引用:

doSomething(*unique);

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



1> TartanLlama..:

你不需要打电话get,只需要取消引用:

doSomething(*unique);

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



2> Dietmar Kühl..:

在解除引用指针时,标准库智能指针应该像原始指针一样使用.也就是说,你只需使用

std::unique_ptr unique(new Test());
std::cout << unique->message << " John.\n";
doSomething(*unique);

我包括声明以显示简化用法和一个输出以强调不使用std::endl.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有