gpt4 book ai didi

c++11 - 复制 ctor 按值返回 C++11

转载 作者:行者123 更新时间:2023-12-04 04:48:01 24 4
gpt4 key购买 nike

当存在 move 构造函数时,在 c++11 中按值返回是否需要复制构造函数? GCC 4.7.1 提示 copy-ctor 被隐式​​删除,因为我只有一个 move 构造函数,但我认为在这种情况下它应该使用 move 构造函数。

VeryLargeObject foo(...)
{
VeryLargeObject ret;
//Built object
return ret; //<Error: VeryLargeObject has deleted copy-constructor
}

在我真的需要它之前,我不想添加复制构造函数。

编辑:

对不起,我发现我忘记了 move 构造函数......我只有 move 分配:-(

最佳答案

不,在这种情况下你应该只需要一个 move 构造函数。要么你的代码有一个错误(也许 move 构造函数被抑制了,或者你实际上没有添加它)或者它是一个 GCC 错误。根据您的帖子编辑,看起来可能是前者。

如果您尝试返回本地变量以外的 L 值,则需要复制构造函数。在这种情况下,您可以使用 move() 将 L 值转换为 R 值。让它工作(当然,意识到你可能会改变 L 值的状态)。

关于c++11 - 复制 ctor 按值返回 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888347/

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