第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C ++中成員函數(shù)的const&,&和&&&說(shuō)明符

C ++中成員函數(shù)的const&,&和&&&說(shuō)明符

C++
桃花長(zhǎng)相依 2019-11-29 11:11:21
最近,我正在閱讀的API,boost::optional發(fā)現(xiàn)其中的內(nèi)容:T const& operator *() const& ;T&       operator *() & ;T&&      operator *() && ;我還編寫(xiě)了自己的程序,該程序?qū)⒊蓡T函數(shù)定義為const&,&和&&(請(qǐng)注意,我并不是在講返回類(lèi)型,而是在分號(hào)之前的說(shuō)明符),并且它們似乎可以正常工作。我知道聲明成員函數(shù)const的含義,但是任何人都可以解釋聲明const&,&和&&的含義。
查看完整描述

3 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

const& 意味著,此重載將僅用于const,non-const和lvalue對(duì)象。


const A a = A();

*a;

& 意味著,此重載將僅用于非const對(duì)象。


A a;

*a;

&& 意味著,此重載將僅用于右值對(duì)象。


*A();

有關(guān)C ++ 11標(biāo)準(zhǔn)此功能的更多信息,您可以閱讀這篇文章什么是“ * this的右值參考”?


查看完整回答
反對(duì) 回復(fù) 2019-11-29
?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

它是成員函數(shù)ref限定符,它是C ++ 11中添加的功能之一。this通過(guò)指定函數(shù)ref限定符(一些細(xì)節(jié)),可以基于隱式對(duì)象參數(shù)是左值還是右值來(lái)重載非靜態(tài)成員函數(shù)。


要指定REF-預(yù)選賽非靜態(tài)成員函數(shù),您可以用限定功能&或&&。


#include <iostream>

struct myStruct {

    void func() & { std::cout << "lvalue\n"; }

    void func() &&{ std::cout << "rvalue\n"; }

};


int main(){

    myStruct s;

    s.func();            // prints "lvalue"

    std::move(s).func(); // prints "rvalue"

    myStruct().func();   // prints "rvalue"

}


查看完整回答
反對(duì) 回復(fù) 2019-11-29
?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

正如您所問(wèn)的,這些并不是“必需的”。但是它們提供了某些可選的優(yōu)化。您可能只是擁有T operator *();而已-可以編譯,但是會(huì)產(chǎn)生一些奇怪的后果- *p = x不會(huì)做您期望的事情。我認(rèn)為重要的是返回類(lèi)型-我們想要具有不同返回類(lèi)型的多個(gè)重載。一旦了解了不同返回類(lèi)型的可取性,您還將看到我們最終需要使用限定符來(lái)控制每個(gè)調(diào)用使用哪種重載(以及哪種返回類(lèi)型)。

查看完整回答
反對(duì) 回復(fù) 2019-11-29
  • 3 回答
  • 0 關(guān)注
  • 920 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)