gpt4 book ai didi

c++ - 传递可移动物体

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:45 25 4
gpt4 key购买 nike

阅读 SO 中的一个答案,他通过 move 传递了一个 vector。我认为正确的方法是在不使用 move 的情况下简单地传递它:

class B
{
std::vector<T> data;

public:
B(std::vector<T> p) : data(std::move(p)) {}
^^^^^^^^^^^^
?
};

第二种方式是:

class B
{
std::vector<T> data;

public:
B(std::vector<T> p) : data(p) {}
};

哪个是正确的?

最佳答案

函数参数已经被取值了,所以一个拷贝已经被创建了。本地对象 p 毫无疑问是你的,而且是你一个人的,所以你可以无条件地离开它。

按值获取参数的美妙之处在于它适用于左值和右值:对于左值,您可以制作一个真正的拷贝,因为您无能为力,但是对于右值,函数参数本身可以通过移动来构造,所以只有一个昂贵的建筑发生过,其他一切都被移动了。

关于c++ - 传递可移动物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944772/

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