4 回答

TA貢獻1825條經(jīng)驗 獲得超6個贊
a->b通常是的同義詞(*a).b。由于運算符的綁定強度,此處的括號是必需的,*并且.:: *a.b無效,因為.綁定更牢固并首先執(zhí)行。因此,這等效于*(a.b)。
但是,請?zhí)岱乐剌d:由于->和*都可以重載,因此它們的含義可能會大不相同。

TA貢獻1786條經(jīng)驗 獲得超11個贊
C ++語言將箭頭運算符(->)定義為取消引用指針的同義詞,然后.在該地址上使用-operator。
例如:
如果您有一個對象anObject和一個指針,則aPointer:
SomeClass anObject = new SomeClass();
SomeClass *aPointer = &anObject;
為了能夠使用對象方法之一,您可以取消引用指針并對該地址進行方法調(diào)用:
(*aPointer).method();
可以使用箭頭運算符編寫:
aPointer->method();
存在箭頭運算符的主要原因是,它縮短了一個非常常見的任務的鍵入時間,并且還很容易忘記指針取消引用前后的括號。如果您忘記了括號,則.-operator的綁定會更強,然后* -operator并使我們的示例執(zhí)行為:
*(aPointer.method()); // Not our intention!
其他一些答案也提到C ++運算符可能是重載的,而且這種情況并不常見。

TA貢獻1851條經(jīng)驗 獲得超5個贊
在C ++ 0x中,運算符具有第二個含義,表示函數(shù)或lambda表達式的返回類型
auto f() -> int; // "->" means "returns ..."
- 4 回答
- 0 關(guān)注
- 657 瀏覽
添加回答
舉報