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


当前回答

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

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

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

其他回答

很简单,只要你看到

 x->y

知道它是一样的

 (*x).y

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

object.Field

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

pClass->Field

作为指针,我们可以用

*pointervariable.foo

但是。运算符的优先级高于*运算符,因此。首先求值。所以我们需要用括号强制执行:

(*pointervariable).foo

但是一直键入()是很困难的,所以他们开发了->作为表示相同内容的快捷方式。如果您正在访问对象或对象引用的属性,请使用。如果您正在通过指针访问对象的属性,请使用->

pSomething->someMember

等于

(*pSomething).someMember

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

正如其他人所说:

指针- >方法();

是一种简单的表达方式:

(*指针).method ();

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

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