在c++中,点(.)操作符和->有什么区别?


当前回答

当你有指针时使用->。 使用。当你有结构(类)时。

当你想要指向属于结构使用的属性时:

structure.attribute

当你想通过指针指向一个有内存引用的属性时,使用->:

pointer->method;

或与:

(*pointer).method

其他回答

Foo ->bar()与(* Foo).bar()相同。

上面的括号是必要的,因为*和的结合强度。操作符。

*foo.bar()将无法工作,因为Dot(.)操作符首先被求值(参见操作符优先级)

点(.)操作符不能重载,箭头(->)操作符可以重载。

点(.)操作符不能应用于指针。

另请参阅:在c++中箭头操作符(->)的同义词是什么?

很简单,只要你看到

 x->y

知道它是一样的

 (*x).y

->只是指针解引用的语法糖,

正如其他人所说:

指针- >方法();

是一种简单的表达方式:

(*指针).method ();

更多指针的乐趣,看看Binky,和他的魔法棒去引用:

http://www.youtube.com/watch?v=UvoHwFvAvQE

的。运算符用于直接成员访问。

object.Field

箭头解除了对指针的引用,这样你就可以访问它所指向的对象/内存

pClass->Field

目标。 Dot用于对象;箭头作用于指向对象的指针。

std::string str("foo");
std::string * pstr = new std::string("foo");

str.size ();
pstr->size ();