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


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

  • a.b 僅在 b 是物件 a(或對物件的引用[1])的成員時使用。因此,對於 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+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告