您当前的位置: 首页 > 
  • 5浏览

    0关注

    322博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

std::ref用法以及和&引用区别

森明帮大于黑虎帮 发布时间:2022-10-16 22:46:44 ,浏览量:5

1、std::ref是什么?
  • 关于c++中的std::ref,std::ref在c++11引入。本文通过讲解std::ref的常用方式,及剖析下std::ref内部实现,然后我们再进一步分析为什么使用std::ref。

  • ref是个函数模板: 在这里插入图片描述

    • 用来构建一个reference_wrapper对象并返回,该对象拥有传入的elem变量的引用。如果参数本身是一个reference_wrapper类型的对象,则创建该对象的一个副本,并返回。
2、为什么要有std::ref
  • std::ref主要在函数式编程(如std::bind)时使用,bind是对参数直接拷贝,无法传入引用(即使你传入的实参是引用类型也不行),故引入std::ref()。使用std::ref可以在模板传参的时候传入引用。

  • std::ref能使用reference_wrapper包装好的引用对象代替原本会被识别的值类型,而reference_wrapper能隐式转换为被引用的值的引用类型。

代码如下:

#include 
#include 
#include

using namespace std;

//std::ref主要是考虑函数式编程(如std::bind)在使用时,是对参数直接拷贝,而不是引用
void f(int& a, int& b, int& c)
{
    cout             
关注
打赏
1664288938
查看更多评论
0.0382s