可能重复:
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;