gpt4 book ai didi

c++ - 为什么在这种情况下调用 move 构造函数?

转载 作者:行者123 更新时间:2023-11-28 01:26:09 25 4
gpt4 key购买 nike

<分区>

我有以下代码:

SomeClass func()
{
SomeClass someObject;
someObject.mutate("some text");
return someObject;
}

int main()
{
func();
return 0;
}

其中 SomeClass 仅在构造函数中记录一些内容,以便我可以验证正在调用的内容。

对于发布版本,我有以下输出:

default constructor

由于复制/move 省略,这是有道理的。我想关闭返回值优化。通过调试版本,我得到以下输出:

default constructor
move constructor

我认为我可以安全地假设 NRVO si 关闭。我真的很想知道为什么调用 move 构造函数而不是复制构造函数。我的(可能是错误的)理解是,由于 func 中的 someObject 是左值,因此应该使用复制构造函数而不是 move 构造函数来初始化返回对象。

我错过了什么?有人可以指出标准中阐明该案例的段落吗?

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