gpt4 book ai didi

C++ 移动语义

转载 作者:太空狗 更新时间:2023-10-29 21:35:00 25 4
gpt4 key购买 nike

我有这个例子:

Widget* makeWidget(int a, int b) {
if (a > b) {
return new Widget(a);
}
else {
return new Widget(b);
}
}

这不是和移动返回值一样吗,因为你只是传递引用而不是拷贝?为什么要结束 Moving Constructor/Assignemnt?

问候

最佳答案

取决于你将它与什么进行比较。如果您已将返回类型替换为 unique_ptr<Widget> ,您将使用移动构造函数来实现清晰的所有权语义。

与普通 Widget 相比返回,如果您这样做,您也将实现不可为空性。

在您的情况下,没有执行任何移动,但您也没有任何好处。您返回一些可以为 null 的东西,没有所有权规范。如果没有移动构造函数,您可以这样做,或者被迫复制以维护适当的语义和保证。移动构造函数让您既能吃蛋糕又能吃。

关于C++ 移动语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44454537/

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