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/