gpt4 book ai didi

c++ - 这是对 move 语义的滥用/误用吗?

转载 作者:行者123 更新时间:2023-11-30 01:17:49 25 4
gpt4 key购买 nike

当人们通常讨论或使用 move 语义时,通常是在 move 相同类型的两个类的上下文中。

例如:

MyObject(MyObject &&obj) { // Implementation }

但是,如果 MyObject 大部分只是包装一个像 vector 这样的 STL 容器呢?制作一个接受 vector 并 move 它的 move 构造函数是否会被视为滥用功能?

MyObject(vector<backingtype> &&v) : i_Backing(move(v)) {}  

我问这个是因为我正在制作一个支持 UTF-8 的 json 解析器,它大量使用复制,而 move 容器就足够了,而且速度更快。

auto arrayParseRes = jsonArrayParse(input); // Array parse res
auto jsonArray = JsonArray(arrayParseRes.Parse_Value()); // Currently copying json values

最佳答案

不,从传递给您的构造函数的右值 move 到您的类成员之一没有任何问题。 std::pairstd::tuple 的构造函数也执行此操作。

关于c++ - 这是对 move 语义的滥用/误用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23599759/

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