c++11 - 将仅移动对象作为 r 值引用参数与无引用参数传递 - 有什么区别?
问题描述
只移动对象可以作为右值引用参数和常规无引用参数传递给函数。这两种情况有什么区别?
请参阅以下示例中的 noRValueReference 和 rValueReference:
struct MoveOnly {
MoveOnly() = default;
MoveOnly(MoveOnly&&) = default;
MoveOnly& operator=(MoveOnly&&) = default;
MoveOnly(const MoveOnly&) = delete;
MoveOnly& operator=(const MoveOnly&) = delete;
};
void noRValueReference(MoveOnly val) {}
void rValueReference(MoveOnly&& val) {}
int main() {
MoveOnly a, b;
noRValueReference(std::move(a));
rValueReference(std::move(b));
}
解决方案
推荐阅读
- css - 滚动条不适用于父级的最大高度
- python - 如何使用谷歌colab中的python Open CV从文件夹中检索图像以测试模型的性能并将所有图像打印到csv文件中
- php - 不使用 group by、distinct 或使用 php 计数的 mysql 查询计数
- google-cloud-platform - 将 json 文件加载到 bigquery 的云功能
- java - 带有德语字母的 Html 到 Pdf
- angular - 如何使用 ngModelChange 更新多个参数?
- android - 没有用于反应导航 HeaderBackButton 的 onLongPress
- angular - Angular 9 国际化
- reactjs - 反应 useEffect 和 clearInterval
- javascript - html 表中 removeclass() 的转换