c++ 右值引用
2023-06-08 21:31 作者:無(wú)名_zhihui | 我要投稿
右值引用
左值引用
常規(guī)引用,一般表示對(duì)象的身份。
右值引用(重點(diǎn))
右值引用就是必須綁定到右值(一個(gè)臨時(shí)對(duì)象、將要銷毀的對(duì)象)的引用,一般表示對(duì)象的值。
右值引用可實(shí)現(xiàn)轉(zhuǎn)移語(yǔ)義(Move Sementics)和精確傳遞(Perfect Forwarding),它的主要目的有兩個(gè)方面:
消除兩個(gè)對(duì)象交互時(shí)不必要的對(duì)象拷貝,節(jié)省運(yùn)算存儲(chǔ)資源,提高效率。
能夠更簡(jiǎn)潔明確地定義泛型函數(shù)。
當(dāng)聲明了一個(gè)或多個(gè)特殊的成員函數(shù)(析構(gòu),拷貝構(gòu)造,移動(dòng)構(gòu)造,拷貝賦值運(yùn)算符,移動(dòng)運(yùn)算符)的時(shí)候,通常需要聲明這些所有的函數(shù),這稱為“五規(guī)則”,可以為他們提供顯示實(shí)現(xiàn),也可以顯示默認(rèn)(=default)0或刪除(=delete)他們。
引用折疊
X& &、X& &&、X&& & 可折疊成 X&
X&& && 可折疊成 X&&
例如:
有名稱的右值引用 ,如右值引用參數(shù),本身就是左值,因?yàn)樗哂忻Q。例如void handleMessage(std::string&& Message) 中的message就是一個(gè)左值。
如果將臨時(shí)變量賦值給右值引用,那么只有右值引用在作用域內(nèi),臨時(shí)值的生命周期就會(huì)被延長(zhǎng)。
標(biāo)簽: