c++中ref的作用示例解析-環(huán)球關(guān)注
目錄
正文示例1:輸出:輸出:總結(jié)正文
C++11 中引入std::ref
用于取某個(gè)變量的引用,這個(gè)引入是為了解決一些傳參問題。
(資料圖)
我們知道 C++ 中本來(lái)就有引用的存在,為何 C++11 中還要引入一個(gè)std::ref
了?主要是考慮函數(shù)式編程(如std::bind
)在使用時(shí),是對(duì)參數(shù)直接拷貝,而不是引用。下面通過例子說明
示例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
上述代碼在執(zhí)行std::bind
后,在函數(shù)f()
中n1
的值仍然是 1,n2
和n3
改成了修改的值,說明std::bind
使用的是參數(shù)的拷貝而不是引用,因此必須顯示利用std::ref
來(lái)進(jìn)行引用綁定。具體為什么std::bind
不使用引用,可能確實(shí)有一些需求,使得 C++11 的設(shè)計(jì)者認(rèn)為默認(rèn)應(yīng)該采用拷貝,如果使用者有需求,加上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; }
該程序創(chuàng)建一個(gè)線程 th
,調(diào)用帶有兩個(gè)參數(shù)的 threadFunc
函數(shù):一個(gè)是 std::string
對(duì)象 str
的引用,另一個(gè)是整數(shù) a
。函數(shù) threadFunc
修改字符串 str
為 "change by threadFunc",但不修改整數(shù) a
。最后在主線程中輸出 str
和 a
的值。
輸出:
str = change by threadFunc
a = 9
可以看到,和 std::bind 類似,多線程的 std::thread 也是必須顯式通過 std::ref 來(lái)綁定引用進(jìn)行傳參,否則,形參的引用聲明是無(wú)效的。
總結(jié)
std::ref
是一個(gè) C++ 標(biāo)準(zhǔn)庫(kù)函數(shù)模板,它將對(duì)象的引用轉(zhuǎn)換為可復(fù)制的可調(diào)用對(duì)象。
std::ref
用于將對(duì)象的引用傳遞給函數(shù)或線程等可調(diào)用對(duì)象的參數(shù)。如果不使用 std::ref
,那么函數(shù)或線程會(huì)將對(duì)象的副本傳遞給可調(diào)用對(duì)象的參數(shù),這可能會(huì)導(dǎo)致無(wú)法預(yù)期的結(jié)果,因?yàn)閷?duì)該副本的修改不會(huì)影響原始對(duì)象。通過使用 std::ref
,可以確??烧{(diào)用對(duì)象引用的是原始對(duì)象,因此對(duì)該對(duì)象的修改將影響原始對(duì)象。
需要注意的是,使用 std::ref
前必須確保原始對(duì)象的生命周期至少與可調(diào)用對(duì)象相同,否則會(huì)導(dǎo)致懸空引用。另外,std::ref
不能用于將指向臨時(shí)對(duì)象或?qū)⑦^時(shí)對(duì)象的引用傳遞給可調(diào)用對(duì)象。
總之,std::ref
的作用是將對(duì)象的引用轉(zhuǎn)換為可復(fù)制的可調(diào)用對(duì)象,使得在函數(shù)或線程等可調(diào)用對(duì)象中引用原始對(duì)象,而不是其副本。
以上就是c++中ref的作用示例解析的詳細(xì)內(nèi)容,更多關(guān)于c++ ref作用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:
推薦文章
- c++中ref的作用示例解析-環(huán)球關(guān)注
- 龐文杰2023年一季度表現(xiàn),北信瑞豐優(yōu)選成長(zhǎng)基金季度漲幅10.51%
- 書潤(rùn)匠心 閱動(dòng)奮進(jìn)力量 職工讀享會(huì)分享閱讀心得_世界滾動(dòng)
- 徠卡相機(jī)的“編外兄弟”!小米13 Ultra上手體驗(yàn)
- 環(huán)球短訊!nouveau riche_art nouveau
- 什么是綠茶 綠茶有哪些_什么是紅茶什么是綠茶 焦點(diǎn)熱訊
- 環(huán)球今熱點(diǎn):win 7_7 1越獄
- bak文件查看器下載
- WindTalk | 每周基會(huì)搶先看(4.23-4.29)_當(dāng)前快看
- 最資訊丨愛護(hù)眼睛小常識(shí)視頻_愛護(hù)眼睛小常識(shí)
- 熱文:德爾瑪:預(yù)計(jì)2023年1-3月盈利,凈利潤(rùn)同比增4.55%至20.49%
- 掣肘怎么讀_大家可以了解一下|全球時(shí)訊
- 潤(rùn)月雅筑項(xiàng)目第一批次房源紅線內(nèi)外不利因素告知書
- 全國(guó)多地閱讀系列活動(dòng)火熱進(jìn)行 掀起全民閱讀熱潮
- 假突破后長(zhǎng)陰,下周收官看法-世界百事通
- 大連濱海路貨車限行嗎-焦點(diǎn)快報(bào)
- 內(nèi)蒙古自治區(qū)財(cái)政159億元支持國(guó)有實(shí)體經(jīng)濟(jì)發(fā)展-獨(dú)家
- 今日要聞!湘鄉(xiāng)農(nóng)商銀行:人社服務(wù)“就近辦” “社銀”合作“暖民心”
- 心經(jīng)與智慧-全球快消息
- 男人問你要什么新年禮物_異性問你想要的禮物
- 【視頻】警犬復(fù)訓(xùn)!萌犬變猛犬-熱議
- 德俄相互驅(qū)逐外交官 白銀TD延續(xù)收漲
- 即公大兄無(wú)奕女左將軍王凝之妻也的作用_即公大兄無(wú)奕女左將軍王凝之妻
- 【天天時(shí)快訊】重慶蘇寧易購(gòu)被執(zhí)行超千萬(wàn),該公司累計(jì)被執(zhí)行金額超5310萬(wàn)元。|世界微速訊
- 全球熱點(diǎn)!不成功便成仁怎么理解 不成功便成仁到底是什么意思
- 就壓著打!廣州隊(duì)有驚喜,半場(chǎng)控球率73%,射門8-2,后防門將吃緊
- 斯蒂法諾·埃拉尼奧_關(guān)于斯蒂法諾·埃拉尼奧簡(jiǎn)介|環(huán)球快看點(diǎn)
- 湖南:省政府批復(fù)2023年度人工影響天氣作業(yè)計(jì)劃
- 恒瑞醫(yī)藥一季度營(yíng)收凈利穩(wěn)中有增 自主研發(fā)成果加速落地
- 全球新消息丨張睿微博新浪微博 張睿微博
- 全球關(guān)注:國(guó)家外匯管理局持續(xù)加強(qiáng)對(duì)中小微企業(yè)匯率避險(xiǎn)支持力度
- “共享+新能源”改變生活方式 一嗨租車引領(lǐng)“綠色出行” 世界百事通
- 焦點(diǎn)快播:攀巖世界杯首站:駱知鷺位列女子攀石賽第五名
- 多地暴雪 冷到破紀(jì)錄
- 教育時(shí)評(píng)|做實(shí)做細(xì)就業(yè)指導(dǎo)服務(wù)
- 焦點(diǎn)精選!株洲3年內(nèi)打造200家智能制造企業(yè)
- 商務(wù)部:支持開拓多元化市場(chǎng),將發(fā)布國(guó)別貿(mào)易指南
- 中國(guó)城市區(qū)塊鏈一季度綜合指數(shù)發(fā)布 長(zhǎng)沙區(qū)塊鏈安全指數(shù)蟬聯(lián)第一
- 全球快看點(diǎn)丨多地暴雪,冷到破紀(jì)錄,4月出現(xiàn)如此強(qiáng)度冷空氣正常嗎?專家解讀
- 簡(jiǎn)訊:山西國(guó)民師范舊址革命活動(dòng)紀(jì)念館入圍
- 企業(yè)所得稅案例分析與計(jì)算 企業(yè)所得稅計(jì)算實(shí)例|焦點(diǎn)快看
- 天天微速訊:快充傷電池??jī)蓚€(gè)月不掉健康度
- “交響絲路 如意甘肅”主題展館亮相第二屆中國(guó)(武漢)文化旅游博覽會(huì)
- 天天熱門:北京溫泉度假酒店(北京溫泉度假村哪里好)
- 每日關(guān)注!常喝綠豆湯可以減肥嗎_喝綠豆湯減肥嗎
- 熱門看點(diǎn):科學(xué)家或發(fā)現(xiàn)毛發(fā)變白機(jī)制
- 天吶,孝莊秘史居然是全抄的 當(dāng)前短訊
- csonline大災(zāi)變煉獄_csonline大災(zāi)變 當(dāng)前熱聞
- 闔家安康!_闔家安康是什么意思-天天即時(shí)看
- 每日消息!手機(jī)SD卡加密軟件_手機(jī)sd卡加密
- 天天熱資訊!橫掃!76人淘汰籃網(wǎng)晉級(jí)東部半決賽 將對(duì)陣綠軍老鷹之間勝者
- 徐皓陽(yáng)贊孫沁涵:格局一下就上來(lái)了寶貝,代表四川球迷請(qǐng)你吃飯-天天快播報(bào)
- 深基坑監(jiān)測(cè)規(guī)范_深基坑監(jiān)測(cè)_視訊
- 百余種特色美食亮相2023北京牛街美食文化節(jié)
X 關(guān)閉
最新資訊
- 中餐出海,從海外餐飲進(jìn)中國(guó)看新興市場(chǎng)的文化包容與融合|環(huán)球時(shí)快訊
- 日元符號(hào)怎么寫_日元符號(hào)
- 浙江省文成縣發(fā)布雷電黃色預(yù)警_環(huán)球聚焦
- 五年級(jí)語(yǔ)文期中考試卷_人教版五年級(jí)語(yǔ)文期中考試卷
- 濕氣對(duì)身體的危害有多大_濕氣對(duì)身體的危害
- 弱冷空氣逼近南嶺,廣州將會(huì)降溫且有中雷雨 今日關(guān)注
- 山西省有幾個(gè)市分別是_山西省有幾個(gè)市 環(huán)球今熱點(diǎn)
- 中聯(lián)挖掘機(jī)圖片_中聯(lián)挖掘機(jī)
- LCK亞運(yùn)會(huì)預(yù)選名單公布:一共20人!Ruler和Kanavi成功入選|世界信息
- 第三屆白茶大會(huì)4月23-25日政和舉辦-每日速看
- 酷狗音樂如何開啟一鍵派對(duì)(酷狗一鍵派對(duì)功能在哪里設(shè)置) 世界今熱點(diǎn)
- 宋曼琴
- 音樂戲劇《少年的,莎士比亞奇旅》諧趣講述文豪一生
- 上海車展沒吃上寶馬的冰淇淋,我不怨寶馬,他們才是真正可恨的|熱點(diǎn)聚焦
- 男性什么時(shí)候性功能開始下降_男人多少歲性功能開始下降 當(dāng)前訊息
- 腸系淋巴結(jié)發(fā)炎是怎么引起的_腸系淋巴結(jié)貼什么肚臍貼 世界觀熱點(diǎn)
- 蘆薈棉是什么材質(zhì) 教你了解蘆薈棉和純棉的區(qū)別
- 十二屆省委第二輪巡視全部完成進(jìn)駐 第二批巡視各巡視組聯(lián)系方式公布_環(huán)球看點(diǎn)
- 美不勝收!《新千里江山圖·錦繡江蘇》重磅上線-世界資訊
- 今日播報(bào)!華夏希望英語(yǔ)報(bào)紙答案_華夏希望英語(yǔ)周刊答案
- @畢業(yè)生,求職這些“坑”別踩!
- 瓜迪奧拉:格拉利什在維拉不習(xí)慣一周三賽,他已經(jīng)適應(yīng)曼城節(jié)奏
- 環(huán)球微速訊:羅翔如何成為“法學(xué)界的郭德綱”?俞敏洪“爆料”:是新東方訓(xùn)練出來(lái)的!
- 環(huán)球新動(dòng)態(tài):北京全市車管窗口、執(zhí)法窗口5月1日暫停對(duì)外辦公
- 世界簡(jiǎn)訊:盡力局!愛德華茲36分7板5助3斷 罰球15中13&多于掘金全隊(duì)
- 三亞市氣象臺(tái)解除雷電黃色預(yù)警【Ⅲ級(jí)/較重】_世界新要聞
- 20家省級(jí)電視臺(tái)聯(lián)合維權(quán)聲明;微信抖音快手下架違規(guī)“微短劇”小程序 \| 傳媒動(dòng)態(tài)【4.16-4.22】 全球熱點(diǎn)
- 上合組織秘書長(zhǎng)張明:青少年是上合組織的未來(lái),也是我們的明天_報(bào)道
- 全球微動(dòng)態(tài)丨罕見,發(fā)現(xiàn)1例確診!沒有疫苗可預(yù)防
- 全球快報(bào):一船漁火貫?zāi)媳?,魯風(fēng)運(yùn)河展新韻
- 每日熱門:疫情已過將近半年,我們的財(cái)務(wù)免疫力是否提上來(lái)了?
- iOS 微信 8.0.36 發(fā)布,所有新變化都在這! 全球訊息
- 如何制作蛋白酥皮
- 惠威音響性價(jià)比最高的音響_惠威音箱哪款好|世界消息
- 具有推動(dòng)持續(xù)改進(jìn)的豐富經(jīng)驗(yàn)的熟練運(yùn)營(yíng)領(lǐng)導(dǎo)者加入Protos Security
- 開啟數(shù)字化之旅:VR全景視頻帶你進(jìn)入真實(shí)而神奇的世界 天天消息
- Niagara Jace 部分品牌默認(rèn)密碼
- 每日頭條!孔子學(xué)院章程
- 孔德勝民居
- 倫勃朗自畫像有多少_倫勃朗自畫像
- 陜西省寶塔區(qū)發(fā)布暴雪藍(lán)色預(yù)警
- 十四屆全國(guó)人大常委會(huì)第二次會(huì)議將審議反間諜法修訂草案等-焦點(diǎn)消息
- 香椿芽怎么腌制好吃_香椿芽家常腌制方法分享-全球時(shí)快訊
- 2023年寧波發(fā)放的市級(jí)汽車消費(fèi)券有多少錢_要聞
- 今年的夏日衣櫥里,一定要有這條裙子!-世界熱點(diǎn)評(píng)
- 世界最資訊丨4月21日山西文水鹽酸價(jià)格暫穩(wěn) 開工限產(chǎn)
- 廣州七中官網(wǎng)登錄-廣州七中官網(wǎng)|今日看點(diǎn)
- 十二星座性格特點(diǎn)分析_簡(jiǎn)述各信息檢索工具的特點(diǎn)-天天熱點(diǎn)評(píng)
- 最新!微信新功能來(lái)了|環(huán)球最新
- 2023年蓉臺(tái)茶文化暨鄉(xiāng)村振興研習(xí)營(yíng)啟動(dòng) 在蓉臺(tái)商體驗(yàn)四川茶文化 世界視點(diǎn)
X 關(guān)閉