当前位置: 首页 > news >正文

C++:std::move 和 std::forward

先说结论:

  • std::forward:用于完全按照传递的参数转发,保留其值类别(左值或右值)
  • std::move:用于将对象转换为右值引用,通常用于启用移动语义并转移所有权

示例:

先看一个简单的示例,注意他们的输出结果

#include <iostream>void Print(int &a) {std::cout << "int&: " << a << std::endl;
}void Print(int &&a) {std::cout << "int&&: " << a << std::endl;
}template<typename T>
void move_func(T &&a) {Print(std::move(a));
}template<typename T>
void forward_func(T &&a) {Print(std::forward<T>(a));
}int main() {int arg = 10;move_func(arg); /* arg is an lvalue */// int&&: 10move_func(25); /* 25 is an rvalue  */// int&&: 25forward_func(arg); /* arg is an lvalue */// int&: 10forward_func(25); /* 25 is an rvalue  */// int&&: 25return 0;
}

参考

性能大杀器:std::move 和 std::forward

http://www.lryc.cn/news/445537.html

相关文章:

  • PHP探索校园新生态校园帮小程序系统小程序源码
  • 通信工程学习:什么是MANO管理编排
  • 备战软考Day04-计算机网络
  • 可以把台式电脑做成服务器吗
  • JavaScript 输出方式
  • 微服务(一)
  • Uniapp时间戳转时间显示/时间格式
  • C++类和对象(中)【下篇】
  • 【亿美软通-注册/登录安全分析报告】
  • 数据分析学习之学习路线
  • Oracle逻辑备份脚本【生产环境适用】
  • Python范例总结
  • 若依生成主子表
  • dotnet4.0编译问题
  • 研一奖学金计划2024/9/23有感
  • html知识点框架
  • SpringBoot的应用
  • Spring源码学习:SpringMVC(3)mvcannotation-driven标签解析【RequestMappingHandlerMapping生成】
  • 2024 Redis 全部
  • [SDX35+WCN6856]SDX35 + WCN6856 WiFi可以up起来之后无法扫描到SSID
  • VisualStudio如何卸载Resharper插件?
  • Unity Debug时出现请选择unity实例
  • 国庆出行新宠:南卡Pro5骨传导耳机,让旅途不再孤单
  • 2024.09.18 leetcode 每日一题
  • 快递物流短信API接口代码
  • 人工智能-机器学习-深度学习-分类与算法梳理
  • Xinference:深度学习模型推理与优化指南
  • Windows 2003系统的防护技巧,禁止IPC$空连接
  • Kubernetes 深入浅出系列 | 容器剖析之容器基本实现原理
  • 【学习笔记】TLS/SSL握手