在c++中,点(.)操作符和->有什么区别?
当前回答
作为指针,我们可以用
*pointervariable.foo
但是。运算符的优先级高于*运算符,因此。首先求值。所以我们需要用括号强制执行:
(*pointervariable).foo
但是一直键入()是很困难的,所以他们开发了->作为表示相同内容的快捷方式。如果您正在访问对象或对象引用的属性,请使用。如果您正在通过指针访问对象的属性,请使用->
其他回答
目标。 Dot用于对象;箭头作用于指向对象的指针。
std::string str("foo");
std::string * pstr = new std::string("foo");
str.size ();
pstr->size ();
当你有指针时使用->。 使用。当你有结构(类)时。
当你想要指向属于结构使用的属性时:
structure.attribute
当你想通过指针指向一个有内存引用的属性时,使用->:
pointer->method;
或与:
(*pointer).method
->只是指针解引用的语法糖,
正如其他人所说:
指针- >方法();
是一种简单的表达方式:
(*指针).method ();
更多指针的乐趣,看看Binky,和他的魔法棒去引用:
http://www.youtube.com/watch?v=UvoHwFvAvQE
箭头操作符与点操作符类似,只是它先对指针进行解引用。foo.bar()在对象foo上调用方法bar(), foo->bar在指针foo指向的对象上调用方法bar。
很简单,只要你看到
x->y
知道它是一样的
(*x).y