#include <functional>
#include <iostream>
 
void f(int& n1, int& n2, const int& n3)
{
    std::cout << "In function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
    ++n1; // increments the copy of n1 stored in the function object
    ++n2; // increments the main()'s n2
    // ++n3; // compile error
}
 
int main()
{
    int n1 = 1, n2 = 2, n3 = 3;
    std::function<void()> bound_f = std::bind(f, n1, std::ref(n2), std::cref(n3));
    n1 = 10;
    n2 = 11;
    n3 = 12;
    std::cout << "Before function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
    bound_f();
    std::cout << "After function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
}

Output:
Before function: 10 11 12
In function: 1 11 12
After function: 10 12 12

在上面的例子中,如果不加ref,bind引用的是值的拷贝,而不是值的传递,所以当我们需要传递值的话,加上ref或cref就可以

最新文章

  1. Hybrid App移动应用开发初探
  2. UDS(ISO14229-2006) 汉译(No.1 范围)
  3. Python 对象的引用计数和拷贝
  4. HDU1412
  5. 获取Application中的spring容器
  6. java_利用session校验图片认证码
  7. 在Java项目中整合Scala
  8. GDI+ —— Tcanvas 类属性及方法.......
  9. hdu3038(并查集)
  10. window.location.hash 使用说明
  11. MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
  12. 关于阿里云Centos7 Mailx发送邮件失败的处理
  13. vue基于webpack说明
  14. jQuery单选框的回显
  15. MSG结构体和WndProc窗口过程详解
  16. for in 循环 和for循环 for of循环
  17. 3分钟学会做智能插座(DIY)
  18. 关于RabbitMQ关键性问题的总结
  19. mybatis if标签判断字符串相等
  20. 數據庫ORACLE轉MYSQL存儲過程遇到的坑~(總結)

热门文章

  1. (待补充)diff 算法解析
  2. IC应届生40万白菜价!从业多年的资深专家手把手指导你如何选择offer!
  3. ContOS 7安装Docker使用及部署MySQL和Nginx
  4. C语言字符串输入输出函数(gets()函数、puts()函数、fgets()函数、fputs()函数)
  5. MySQL 学习-进阶
  6. boostrap的select2自动换行的问题解决
  7. 【计算机网络】TCP的三次握手与四次挥手
  8. How to use Remote-SSH in Windows
  9. Pytorch中pad函数toch.nn.functional.pad()的用法
  10. think php 登录 (session+验证码)