gpt4 book ai didi

c++ - 如何按值将不可复制的可移动对象作为 const 返回并存储它?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:07 26 4
gpt4 key购买 nike

class A;
const A getA();

A - 不可复制,可移动。

getA() - 构造并返回一个 A,作为 const

如何做到这一点?

const A a = getA();

我只能这样做。

const A& a = getA();

最佳答案

不要按 const 的值返回。当你返回任何东西时,你是在说“来电者,现在这是你的了。用它做你想做的事”。如果您的方法的调用者不想修改它,他们可以将其存储为 const,如上所示:const A a = getA(); .但是你(作为一种方法)不应该告诉调用者他们的对象是否是const(你的返回值是他们的对象) .

如果你的返回值是const,你不能从它move到你的新对象中,所以你的移动构造函数甚至不被考虑。唯一的选择是复制,这也不起作用,因为在您的情况下它是一个不可复制的对象。如果返回值是非常量,您可以从中移动,并得到您想要的行为。

关于c++ - 如何按值将不可复制的可移动对象作为 const 返回并存储它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065256/

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