- >和之间的区别.成员选择运营商

Tim*_*ech 3 c++ class operators

可能重复:
c ++中(.)点运算符和( - >)箭头之间的区别是什么

在这本书中,我有我学习指针和我刚刚得到有关OOP的章节进行(吐在地面上)反正它告诉我,我可以用一个成员选择操作这样的( - >).它说这就像"." 除了指向对象而不是成员对象.什么是差异,它看起来像是以同样的方式使用...

gre*_*ade 8

哪里:

Foo foo;
Foo* pfoo = &foo;
Run Code Online (Sandbox Code Playgroud)

pfoo->mem在语义上是相同的(*pfoo).mem.

或者,换句话说:foo.mem在语义上是相同的(&foo)->mem.

  • 它在语义上是相同的.如果它是相同的令牌序列,它在语法上是相同的:) (5认同)

Jac*_*ack 6

是的,它实际上做了同样的事情,但对于不同类型的变量.

如果你有一个指针你必须使用->,而如果你有一个真正的价值,你将使用..

所以举个例子

struct mystruct *pointer;
struct mystruct var;

pointer->field = ...
var.field = ...
Run Code Online (Sandbox Code Playgroud)

这根本不难.请记住,您需要一个指针->,.否则.


zda*_*dan 5

只有在变量是指向对象的指针时才使用 - > :

A* a = new A;
a->member();
Run Code Online (Sandbox Code Playgroud)

使用 "." 当它不是指针时:

A a;
a.member();
Run Code Online (Sandbox Code Playgroud)