C++中的箭頭運算子是什麼?


點運算子和箭頭運算子都用於在C++中訪問類的成員。它們只是用於不同的場景。在C++中,宣告為類、結構或聯合的型別被認為是“類型別”。因此,以下內容同時指兩者。

  • a.b 僅當 b 是物件 (或物件的引用[1]) a 的成員時才使用。因此,對於 a.b,a 將始終是類的實際物件(或物件的引用)。
  • a→b 本質上是 (*a).b 的簡寫表示法,即如果 a 是指向物件的指標,則 a→b 訪問指向的物件的屬性 b。

請注意,. 不能過載。→ 是一個可過載的運算子,因此我們可以定義自己的函式 (operator→()),當使用此運算子時應該呼叫該函式。因此,如果 a 是過載了 operator→ 的類的物件(常見的此類型別是智慧指標和迭代器),則其含義就是類設計者實現的任何含義。


[1] 從語義上講,引用是物件的別名,因此我還應該在 #3 中新增“或指向指標的引用”。但是,我認為這會比有幫助更令人困惑,因為指向指標的引用 (T*&) 很少使用。

示例

#include<iostream>
class A {
   public: int b;
   A() { b = 5; }
};
int main() {
   A a = A();
   A* x = &a;
   std::cout << "a.b = " << a.b << "\n";
   std::cout << "x->b = " << x->b << "\n";
   return 0;
}

輸出

這將給出以下輸出:

5
5

更新於:2020年2月10日

3K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.