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