C++ bind 和 ref
#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就可以
最新文章
- Hybrid App移动应用开发初探
- UDS(ISO14229-2006) 汉译(No.1 范围)
- Python 对象的引用计数和拷贝
- HDU1412
- 获取Application中的spring容器
- java_利用session校验图片认证码
- 在Java项目中整合Scala
- GDI+ —— Tcanvas 类属性及方法.......
- hdu3038(并查集)
- window.location.hash 使用说明
- MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
- 关于阿里云Centos7 Mailx发送邮件失败的处理
- vue基于webpack说明
- jQuery单选框的回显
- MSG结构体和WndProc窗口过程详解
- for in 循环 和for循环 for of循环
- 3分钟学会做智能插座(DIY)
- 关于RabbitMQ关键性问题的总结
- mybatis if标签判断字符串相等
- 數據庫ORACLE轉MYSQL存儲過程遇到的坑~(總結)
热门文章
- (待补充)diff 算法解析
- IC应届生40万白菜价!从业多年的资深专家手把手指导你如何选择offer!
- ContOS 7安装Docker使用及部署MySQL和Nginx
- C语言字符串输入输出函数(gets()函数、puts()函数、fgets()函数、fputs()函数)
- MySQL 学习-进阶
- boostrap的select2自动换行的问题解决
- 【计算机网络】TCP的三次握手与四次挥手
- How to use Remote-SSH in Windows
- Pytorch中pad函数toch.nn.functional.pad()的用法
- think php 登录 (session+验证码)