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
廣告