class A;
const A getA();
A - 不可复制,可移动。
getA()
- 构造并返回一个A
, as const
。
这个怎么做?
const A a = getA();
我只能这样做。
const A& a = getA();
class A;
const A getA();
A - 不可复制,可移动。
getA()
- 构造并返回一个A
, as const
。
这个怎么做?
const A a = getA();
我只能这样做。
const A& a = getA();
不要按值返回const
. 当您返回任何内容时,您是在说“来电者,这现在是你的了。用它做你想做的事”。如果您的方法的调用者不想修改它,他们可以将其存储为const
,如上所示:const A a = getA();
。但是你(作为一种方法)不应该告诉调用者他们的对象是否是const
(你的返回值是他们的对象)。
如果你的返回值是const
你不能move
从它进入你的新对象,那么你的移动构造函数甚至不会被考虑。唯一的选择是复制,这也不起作用,因为在您的情况下它是不可复制的对象。如果返回是非常量的,您可以从中移出,并获得您想要的行为。