亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

重載成員訪問運算符->,。*(C ++)

重載成員訪問運算符->,。*(C ++)

C++
慕蓋茨4494581 2019-10-05 13:33:05
據我所知大多數運算符重載,與成員訪問運營商外->,.*,->*等。特別是,什么傳遞給這些運算符,應該返回什么?操作員功能(例如operator->(...))如何知道所引用的成員?能知道嗎 它甚至需要知道嗎?最后,是否需要考慮任何常量注意事項?例如,當重載類似的東西時operator[],通常您將需要const版本和非const版本。成員訪問運算符是否需要const和非const版本?
查看完整描述

3 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

運算符->很特殊。


“它具有附加的非典型約束:它必須返回還具有指針取消引用操作符的對象(或對對象的引用),或者必須返回可以用于選擇指針取消引用操作符箭頭所指向的指針。 ” 布魯斯·??藸枺˙ruce Eckel):思考CPP第一卷:操作員->


為了方便起見,提供了額外的功能,因此您不必致電


a->->func();

您可以簡單地執行以下操作:


a->func();

這使得運算符->與其他運算符重載不同。


查看完整回答
反對 回復 2019-10-05
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

您不能過載成員訪問權限.(即,第二部分->)。但是,您可以重載一元解引用運算符*(即,該->函數的第一部分)。

C ++ ->運算符基本上是兩個步驟的結合,如果您認為x->y等效于,則很清楚(*x).y。(*x)x屬于類的實例時,C ++允許您自定義如何處理零件。

->重載的語義有些奇怪,因為C ++允許您返回一個常規指針(它將用于查找指向的對象),或者如果該類還提供了一個->運算符,則可以返回另一個類的實例。在第二種情況下,從該新實例繼續搜索取消引用的對象。


查看完整回答
反對 回復 2019-10-05
  • 3 回答
  • 0 關注
  • 620 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號