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

标签 c++

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/

相关文章:

c++ - 一个数组来保存 C++ 中的任何对象?

c++ - strncpy 向我的 char 数组添加额外的字符

c++ - 在列表中插入 vector

c++ - C++ 中的宏/定义区分大小写吗?

c++ - 从 HKEY 转换为字符串,C++

c++ - priority_queue 声明和 bool operator < 声明

java - 打印桌面的屏幕截图并转换为像素矩阵 [0,1]

android - 如何在 Android 上用 Qt 或 C++ 重新启动程序?

c++ - 如何有效地将 git 存储库/子模块用于具有许多依赖项的 C++ 产品?

c++ - Boost.Asio: socket::close 不取消 aysnc_read_some