0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于右值引用的一點理解

冬至子 ? 來源:鳴鳴鑼的小屋 ? 作者:Maxwell Luo ? 2023-07-21 17:38 ? 次閱讀

>>> 背景

我們知道對于一些C++內(nèi)建類型來說,ostream類的操作符<<都提供了輸出到標準輸出流的方法,只需要像下面這樣就能輸出到終端窗口了。

int num = 1;
string str = "number";
cout < < str < < " is " < < num;

但是對于自建類的話,就需要其他的手段輸出想要的內(nèi)容了。通過重載<<操作符并聲明為ostream類的友元是常見的方法。下面就是一種常見的書寫范式。

class Persion
{
private:
    string name;
    int age;


public:
    Persion() = delete;
    Persion(string a_name, int a_age) : 
        name(a_name), age(a_age) {}
    friend ostream& operator< "(lvalue)A persion object with name: " < < per.name < < ", age: " < < per.age;
        return os;
    }
};

>>> 問題

我在使用下面這串代碼對重載的效果進行測試的時候,編譯器報出了問題,它告訴把右值賦給了要求左值引用的參數(shù)。

cout < < Persion("maxwell", 18) < < endl;

圖片

>>> 解決方案

C++11之后,使用&來聲明左值引用,使用&&來聲明右值引用。在上述測試語句中,Persion( "maxwell" , 18 )是一個臨時變量,屬于右值。因此,如果想要上述測試語句通過,還需要對類補充一個右值引用的成員函數(shù)。如下所示。

class Persion
{
    // ...
    friend ostream& operator< "(rvalue)A persion object with name: " < < per.name < < ", age: " < < per.age;
        return os;
    }
};
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C++語言
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    6944
收藏 人收藏

    評論

    相關(guān)推薦

    請問各位大俠關(guān)于開關(guān)電源哪些書講的比較容易理解一點啊,謝謝

    請問各位大俠關(guān)于開關(guān)電源哪些書講的比較容易理解一點啊,謝謝
    發(fā)表于 06-17 20:46

    STM32的一點資料

    給新手的一點關(guān)于STM32的學(xué)習(xí)資料!
    發(fā)表于 08-15 10:48

    關(guān)于通信原理的一點總結(jié)

    關(guān)于通信原理的一點總結(jié)
    發(fā)表于 08-20 10:00

    有沒有什么好的方法來理解引用句柄

    求教各位,對于各種引用句柄,如VI引用句柄,控件引用句柄等有沒有什么好理解一點的方法,用在什么地方,看書上感覺
    發(fā)表于 06-03 13:29

    關(guān)于光立方的驅(qū)動的一點看法

    本帖最后由 ntmusic 于 2013-9-7 11:10 編輯 首先,我沒有自己做過光立方,所以在這里有點班門弄虎了但是,雖然沒有做過實物,但關(guān)于光立方的驅(qū)動我還是有一點點研究的個好的光
    發(fā)表于 09-07 09:42

    關(guān)于看門狗的一點經(jīng)驗程序

    關(guān)于看門狗的一點經(jīng)驗程序跑飛時可以通過看門狗復(fù)位,嘗試恢復(fù)系統(tǒng)的工作,本文對stm32的Markdown和擴展Markdown簡潔的語法代碼塊高亮圖片鏈接和圖片上傳LaTex數(shù)學(xué)公式UML序列圖
    發(fā)表于 07-30 06:37

    一點開環(huán)與閉環(huán)概念的理解

    一點概念的理解
    發(fā)表于 11-12 06:42

    一點接地,什么是一點接地,一點接地應(yīng)注意的問題

    一點接地,什么是一點接地 一點接地的形式如下圖所示,圖中將各級內(nèi)部的接地元件,即本級電路的發(fā)射極,基極和集電極的所有接
    發(fā)表于 09-30 11:35 ?2.7w次閱讀
    <b class='flag-5'>一點</b>接地,什么是<b class='flag-5'>一點</b>接地,<b class='flag-5'>一點</b>接地應(yīng)注意的問題

    關(guān)于畫高頻PCB板的一點心得

    關(guān)于畫高頻PCB板的一點心得,感興趣的小伙伴們可以看看。
    發(fā)表于 07-26 16:29 ?0次下載

    路燈藍光危害你造嗎?專家建議“冷一點,暗一點

    美國醫(yī)學(xué)會(AMA)最近接受了關(guān)于街道照明的正式政策聲明:冷一點、暗一點。其在聲明中稱,對于晚上戶外照明,尤其是街道照明,其色溫不應(yīng)超過3000開爾文(K)。較高的色溫光照越白,同
    發(fā)表于 11-18 08:59 ?3275次閱讀

    C++基礎(chǔ)語法中的引用、封裝和多態(tài)

    。 引用 引用就是必須綁定到
    的頭像 發(fā)表于 09-12 09:58 ?1266次閱讀

    一點理解之 CmBacktrace: ARM Cortex-M 系列 MCU 錯誤追蹤庫

    一點理解之 CmBacktrace: ARM Cortex-M 系列 MCU 錯誤追蹤庫
    發(fā)表于 11-30 19:51 ?10次下載
    <b class='flag-5'>一點</b><b class='flag-5'>理解</b>之 CmBacktrace: ARM Cortex-M 系列 MCU 錯誤追蹤庫

    關(guān)于連接量子比特的一點:量子計算

    關(guān)于連接量子比特的一點:量子計算
    的頭像 發(fā)表于 01-04 11:17 ?951次閱讀
    <b class='flag-5'>關(guān)于</b>連接量子比特的<b class='flag-5'>一點</b>:量子計算

    什么是左、呢?左右和左右引用

    什么是左、呢?種極不嚴謹?shù)?b class='flag-5'>理解為:在賦值的時候,能夠被放到等號左邊的為左
    的頭像 發(fā)表于 07-18 15:39 ?2880次閱讀
    什么是左<b class='flag-5'>值</b>、<b class='flag-5'>右</b><b class='flag-5'>值</b>呢?左右<b class='flag-5'>值</b>和左右<b class='flag-5'>值</b><b class='flag-5'>引用</b>

    大功率貼片電感的電感偏大一點可以用嗎

    電子發(fā)燒友網(wǎng)站提供《大功率貼片電感的電感偏大一點可以用嗎.docx》資料免費下載
    發(fā)表于 09-20 11:33 ?0次下載