在c++中,点(.)操作符和->有什么区别?
当前回答
Foo ->bar()与(* Foo).bar()相同。
上面的括号是必要的,因为*和的结合强度。操作符。
*foo.bar()将无法工作,因为Dot(.)操作符首先被求值(参见操作符优先级)
点(.)操作符不能重载,箭头(->)操作符可以重载。
点(.)操作符不能应用于指针。
另请参阅:在c++中箭头操作符(->)的同义词是什么?
其他回答
的。运算符用于直接成员访问。
object.Field
箭头解除了对指针的引用,这样你就可以访问它所指向的对象/内存
pClass->Field
箭头操作符与点操作符类似,只是它先对指针进行解引用。foo.bar()在对象foo上调用方法bar(), foo->bar在指针foo指向的对象上调用方法bar。
目标。 Dot用于对象;箭头作用于指向对象的指针。
std::string str("foo");
std::string * pstr = new std::string("foo");
str.size ();
pstr->size ();
的。(点)运算符通常用于从类的实例(或类的静态字段/方法)中获取字段/调用方法。
p.myField, p.myMethod() -一个类的p个实例
->(箭头)操作符用于从类指向的内容获取字段/调用方法。
p->myField, p->myMethod() - p指向类
->只是指针解引用的语法糖,
正如其他人所说:
指针- >方法();
是一种简单的表达方式:
(*指针).method ();
更多指针的乐趣,看看Binky,和他的魔法棒去引用:
http://www.youtube.com/watch?v=UvoHwFvAvQE