C++中的點運算子是什麼?


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

  • a.b 僅在 b 是物件(或對物件[1] 的引用)a 的成員時使用。因此對於 a.b,a 總是一個類的實際物件(或對物件的引用)。
  • a →b 主要是一種簡寫形式,表示 (*a).b,即,如果 a 是對物件的指標,那麼 a →b 是訪問其指向的物件的屬性 b。

請注意,. 不是可過載的。→ 是一個可過載運算子,因此我們可以在使用此運算子時定義我們自己的函式(運算子 →())。因此,如果 a 是一個過載了運算子 →(常見型別是智慧指標和迭代器)的類的物件,那麼含義就是類設計者實現的內容。


[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 日

1K+ 瀏覽量

開啟你的職業生涯

完成課程,獲得認證

開始學習
廣告