c++中ref的作用示例解析-环球关注
目录
正文示例1:输出:输出:总结正文
C++11 中引入std::ref
用于取某个变量的引用,这个引入是为了解决一些传参问题。
(资料图)
我们知道 C++ 中本来就有引用的存在,为何 C++11 中还要引入一个std::ref
了?主要是考虑函数式编程(如std::bind
)在使用时,是对参数直接拷贝,而不是引用。下面通过例子说明
示例1:
#include#include 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 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"; }
输出:
Before function: 10 11 12
In function: 1 11 12
After function: 10 12 12
上述代码在执行std::bind
后,在函数f()
中n1
的值仍然是 1,n2
和n3
改成了修改的值,说明std::bind
使用的是参数的拷贝而不是引用,因此必须显示利用std::ref
来进行引用绑定。具体为什么std::bind
不使用引用,可能确实有一些需求,使得 C++11 的设计者认为默认应该采用拷贝,如果使用者有需求,加上std::ref
即可。
#include#include #include void threadFunc(std::string &str, int a) { str = "change by threadFunc"; a = 13; } int main() { std::string str("main"); int a = 9; std::thread th(threadFunc, std::ref(str), a); th.join(); std::cout<<"str = " << str << std::endl; std::cout<<"a = " << a << std::endl; return 0; }
该程序创建一个线程 th
,调用带有两个参数的 threadFunc
函数:一个是 std::string
对象 str
的引用,另一个是整数 a
。函数 threadFunc
修改字符串 str
为 "change by threadFunc",但不修改整数 a
。最后在主线程中输出 str
和 a
的值。
输出:
str = change by threadFunc
a = 9
可以看到,和 std::bind 类似,多线程的 std::thread 也是必须显式通过 std::ref 来绑定引用进行传参,否则,形参的引用声明是无效的。
总结
std::ref
是一个 C++ 标准库函数模板,它将对象的引用转换为可复制的可调用对象。
std::ref
用于将对象的引用传递给函数或线程等可调用对象的参数。如果不使用 std::ref
,那么函数或线程会将对象的副本传递给可调用对象的参数,这可能会导致无法预期的结果,因为对该副本的修改不会影响原始对象。通过使用 std::ref
,可以确保可调用对象引用的是原始对象,因此对该对象的修改将影响原始对象。
需要注意的是,使用 std::ref
前必须确保原始对象的生命周期至少与可调用对象相同,否则会导致悬空引用。另外,std::ref
不能用于将指向临时对象或将过时对象的引用传递给可调用对象。
总之,std::ref
的作用是将对象的引用转换为可复制的可调用对象,使得在函数或线程等可调用对象中引用原始对象,而不是其副本。
以上就是c++中ref的作用示例解析的详细内容,更多关于c++ ref作用的资料请关注脚本之家其它相关文章!
标签:
推荐文章
- c++中ref的作用示例解析-环球关注
- 庞文杰2023年一季度表现,北信瑞丰优选成长基金季度涨幅10.51%
- 书润匠心 阅动奋进力量 职工读享会分享阅读心得_世界滚动
- 徕卡相机的“编外兄弟”!小米13 Ultra上手体验
- 环球短讯!nouveau riche_art nouveau
- 什么是绿茶 绿茶有哪些_什么是红茶什么是绿茶 焦点热讯
- 环球今热点:win 7_7 1越狱
- bak文件查看器下载
- WindTalk | 每周基会抢先看(4.23-4.29)_当前快看
- 最资讯丨爱护眼睛小常识视频_爱护眼睛小常识
- 热文:德尔玛:预计2023年1-3月盈利,净利润同比增4.55%至20.49%
- 掣肘怎么读_大家可以了解一下|全球时讯
- 润月雅筑项目第一批次房源红线内外不利因素告知书
- 全国多地阅读系列活动火热进行 掀起全民阅读热潮
- 假突破后长阴,下周收官看法-世界百事通
- 大连滨海路货车限行吗-焦点快报
- 内蒙古自治区财政159亿元支持国有实体经济发展-独家
- 今日要闻!湘乡农商银行:人社服务“就近办” “社银”合作“暖民心”
- 心经与智慧-全球快消息
- 男人问你要什么新年礼物_异性问你想要的礼物
- 【视频】警犬复训!萌犬变猛犬-热议
- 德俄相互驱逐外交官 白银TD延续收涨
- 即公大兄无奕女左将军王凝之妻也的作用_即公大兄无奕女左将军王凝之妻
- 【天天时快讯】重庆苏宁易购被执行超千万,该公司累计被执行金额超5310万元。|世界微速讯
- 全球热点!不成功便成仁怎么理解 不成功便成仁到底是什么意思
- 就压着打!广州队有惊喜,半场控球率73%,射门8-2,后防门将吃紧
- 斯蒂法诺·埃拉尼奥_关于斯蒂法诺·埃拉尼奥简介|环球快看点
- 湖南:省政府批复2023年度人工影响天气作业计划
- 恒瑞医药一季度营收净利稳中有增 自主研发成果加速落地
- 全球新消息丨张睿微博新浪微博 张睿微博
- 全球关注:国家外汇管理局持续加强对中小微企业汇率避险支持力度
- “共享+新能源”改变生活方式 一嗨租车引领“绿色出行” 世界百事通
- 焦点快播:攀岩世界杯首站:骆知鹭位列女子攀石赛第五名
- 多地暴雪 冷到破纪录
- 教育时评|做实做细就业指导服务
- 焦点精选!株洲3年内打造200家智能制造企业
- 商务部:支持开拓多元化市场,将发布国别贸易指南
- 中国城市区块链一季度综合指数发布 长沙区块链安全指数蝉联第一
- 全球快看点丨多地暴雪,冷到破纪录,4月出现如此强度冷空气正常吗?专家解读
- 简讯:山西国民师范旧址革命活动纪念馆入围
- 企业所得税案例分析与计算 企业所得税计算实例|焦点快看
- 天天微速讯:快充伤电池?两个月不掉健康度
- “交响丝路 如意甘肃”主题展馆亮相第二届中国(武汉)文化旅游博览会
- 天天热门:北京温泉度假酒店(北京温泉度假村哪里好)
- 每日关注!常喝绿豆汤可以减肥吗_喝绿豆汤减肥吗
- 热门看点:科学家或发现毛发变白机制
- 天呐,孝庄秘史居然是全抄的 当前短讯
- csonline大灾变炼狱_csonline大灾变 当前热闻
- 阖家安康!_阖家安康是什么意思-天天即时看
- 每日消息!手机SD卡加密软件_手机sd卡加密
- 天天热资讯!横扫!76人淘汰篮网晋级东部半决赛 将对阵绿军老鹰之间胜者
- 徐皓阳赞孙沁涵:格局一下就上来了宝贝,代表四川球迷请你吃饭-天天快播报
- 深基坑监测规范_深基坑监测_视讯
- 百余种特色美食亮相2023北京牛街美食文化节
X 关闭
最新资讯
- 中餐出海,从海外餐饮进中国看新兴市场的文化包容与融合|环球时快讯
- 日元符号怎么写_日元符号
- 浙江省文成县发布雷电黄色预警_环球聚焦
- 五年级语文期中考试卷_人教版五年级语文期中考试卷
- 湿气对身体的危害有多大_湿气对身体的危害
- 弱冷空气逼近南岭,广州将会降温且有中雷雨 今日关注
- 山西省有几个市分别是_山西省有几个市 环球今热点
- 中联挖掘机图片_中联挖掘机
- LCK亚运会预选名单公布:一共20人!Ruler和Kanavi成功入选|世界信息
- 第三届白茶大会4月23-25日政和举办-每日速看
- 酷狗音乐如何开启一键派对(酷狗一键派对功能在哪里设置) 世界今热点
- 宋曼琴
- 音乐戏剧《少年的,莎士比亚奇旅》谐趣讲述文豪一生
- 上海车展没吃上宝马的冰淇淋,我不怨宝马,他们才是真正可恨的|热点聚焦
- 男性什么时候性功能开始下降_男人多少岁性功能开始下降 当前讯息
- 肠系淋巴结发炎是怎么引起的_肠系淋巴结贴什么肚脐贴 世界观热点
- 芦荟棉是什么材质 教你了解芦荟棉和纯棉的区别
- 十二届省委第二轮巡视全部完成进驻 第二批巡视各巡视组联系方式公布_环球看点
- 美不胜收!《新千里江山图·锦绣江苏》重磅上线-世界资讯
- 今日播报!华夏希望英语报纸答案_华夏希望英语周刊答案
- @毕业生,求职这些“坑”别踩!
- 瓜迪奥拉:格拉利什在维拉不习惯一周三赛,他已经适应曼城节奏
- 环球微速讯:罗翔如何成为“法学界的郭德纲”?俞敏洪“爆料”:是新东方训练出来的!
- 环球新动态:北京全市车管窗口、执法窗口5月1日暂停对外办公
- 世界简讯:尽力局!爱德华兹36分7板5助3断 罚球15中13&多于掘金全队
- 三亚市气象台解除雷电黄色预警【Ⅲ级/较重】_世界新要闻
- 20家省级电视台联合维权声明;微信抖音快手下架违规“微短剧”小程序 \| 传媒动态【4.16-4.22】 全球热点
- 上合组织秘书长张明:青少年是上合组织的未来,也是我们的明天_报道
- 全球微动态丨罕见,发现1例确诊!没有疫苗可预防
- 全球快报:一船渔火贯南北,鲁风运河展新韵
- 每日热门:疫情已过将近半年,我们的财务免疫力是否提上来了?
- iOS 微信 8.0.36 发布,所有新变化都在这! 全球讯息
- 如何制作蛋白酥皮
- 惠威音响性价比最高的音响_惠威音箱哪款好|世界消息
- 具有推动持续改进的丰富经验的熟练运营领导者加入Protos Security
- 开启数字化之旅:VR全景视频带你进入真实而神奇的世界 天天消息
- Niagara Jace 部分品牌默认密码
- 每日头条!孔子学院章程
- 孔德胜民居
- 伦勃朗自画像有多少_伦勃朗自画像
- 陕西省宝塔区发布暴雪蓝色预警
- 十四届全国人大常委会第二次会议将审议反间谍法修订草案等-焦点消息
- 香椿芽怎么腌制好吃_香椿芽家常腌制方法分享-全球时快讯
- 2023年宁波发放的市级汽车消费券有多少钱_要闻
- 今年的夏日衣橱里,一定要有这条裙子!-世界热点评
- 世界最资讯丨4月21日山西文水盐酸价格暂稳 开工限产
- 广州七中官网登录-广州七中官网|今日看点
- 十二星座性格特点分析_简述各信息检索工具的特点-天天热点评
- 最新!微信新功能来了|环球最新
- 2023年蓉台茶文化暨乡村振兴研习营启动 在蓉台商体验四川茶文化 世界视点
X 关闭