結構解引用運算符

結構解引用運算符  ， 也稱 “ 通過指針訪問成員運算符 ” （ Element selection through pointer ） ， 是 C語言與C + + 的 - > 運算符 。 其功能是獲取運算符左側的指針所指向的對象的某個成員  。 例如 ： struct foo { int value; } foo * p = new foo; std:: cout << p - > value; 該運算符的優先級較高 ， 與函數調用運算符 、 數組下標運算符 [ ] 、 通過引用選擇成員運算符.相同 。 也是自左向右結合 。 即p - > a - > b等價於 ( p - > a ) - > b 。 該運算符可以視作爲解引用運算符 * 的語法糖 。 即p - > a相當於 ( * p ). a 。 C++ 對該運算符的使用規定爲 ： 運算符左端如果是個指針類型 ， 則直接對該指針類型解引用訪問所指向對象的成員 。 即該運算符重載在此情形下未被使用 。 運算符左端如果不是指針類型 ， 編譯器則調用該運算符的重載版本 。 如果沒有重載版本則編譯報錯 。 該運算符的重載版本的返回值 ， 或者是指針類型 ， 或者是內含重載定義了 - > 運算符的類型 ； 對這兩種情形編譯器分別做指針解引用與遞歸調用返回類型的重載版本的 - > 運算符 。