C++11引入右值引用后查看了很多資料,但都過于啰嗦,不能一針見血,這里用最簡單的方式闡述一下
成都創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元獲嘉做網(wǎng)站,已為上家服務(wù),為獲嘉各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108右值引用類型為 T&& 。如
T&& right_ref = ?
右邊的 ?如果是右值就可以了。如果想用左值,就需要std::move(左值)
那么右值引用有什么用呢?答案是移動構(gòu)造的參數(shù)用的是右值引用,比如
class A
{
public:
A(A&& other)
{}
}
上面這個構(gòu)造函數(shù)就是移動構(gòu)造函數(shù)。也就是當(dāng)我們構(gòu)造一個函數(shù)的時候。如果參數(shù)是右值引用。那么就會觸發(fā)移動構(gòu)造。移動構(gòu)造就會掏空other(一般是指針之類的直接奪過來)。這樣就會比拷貝構(gòu)造高效了很多。也就是說std::move(左值)不會對左值有任何影響,只是為了讓其作為參數(shù)來觸發(fā)移動構(gòu)造,在移動構(gòu)造里才會對左值產(chǎn)生掏空的作用。
那么std::forward(?)是做什么的呢?
因為如果? 為 T&&時,是不會觸發(fā)移動構(gòu)造的,所以要經(jīng)過std::forward(T&&)“完美轉(zhuǎn)發(fā)”會才能觸發(fā)移動構(gòu)造
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧