为什么指针上的成员访问/元素选择有不同的运算符?

时间:2012-12-18 01:51:26

标签: c++ c operators

  

可能重复:
  Why does C have a distinction between -> and .?

编译器足够聪明,可以知道左侧操作数是指针还是引用。为什么会员访问有两个不同的运营商(。和 - >)?

是否使间接显式化?易读性?在设计C时,是否存在可用硬件的某些内容,以便在阅读源代码时轻松区分这些操作?

我读过它只是(*ptr).member的简写语法,但是当ptr是指针时,ptr.member是否有效?如果ptr是一个指针,为什么ptr.member“不能正常工作”ptr->member

1 个答案:

答案 0 :(得分:1)

不是一个答案,但是这个区别被利用的一个地方是智能指针和容器迭代器

在这两种情况下,.运算符用于对象本身进行操作,而->用于对包含在其中的对象进行操作。