可能重复:
C++ - (*) 之间的差异。和->?
这有什么区别:
(*ptr).f();
和这个:
ptr->f();
在c++中,ptr 是指向具有函数的 C++ 类的指针f?
根本没有区别。(*ptr).f();是更丑陋的方法。
实际上,如果ptr是一些智能指针及其operator*和operator->被重载并执行一些副作用,那么您可能对此有问题。但这确实是非常糟糕的事情。它和邪恶一样#define true false
如果ptr是普通指针,那么两者是等价的。是取消引用指针(相当于)和访问被取消引用对象的成员(相当于 )ptr->f的捷径。(*ptr).f
如果ptr是一个重载operator->和的类operator*,那么它们将各自调用不同的运算符重载,因此可能具有不同的行为。
除了风格/打字差异外,没有任何区别。这与使用指向结构或类的指针时的(*ptr).member = 7;vs完全相同。ptr->member = 7;