C ++什么是“ - >”?

时间:2011-08-10 11:38:48

标签: c++ programming-languages

  

可能重复:
  What is the arrow operator (->) synonym for in C++?

我只是有一个非常基本的问题。无法在谷歌上搜索...我不知道是什么 - >是和它在c ++中的作用,例如:

render = Surface->Logic->Scale;

4 个答案:

答案 0 :(得分:7)

在C ++ ->中有2个上下文:

  1. 关于指针
  2. 关于对象
  3. 它取消引用指针,所以基本上它会将变量存储在某个偏移处的内存位置。因此,

    Surface->Logic->Scale;
    

    相当于,

    (*Surface).Logic->Scale;  // same applies for 'Logic' too
    

    关于对象,您可以通过将其重载为

    来模拟此运算符
    struct B { void foo(); };
    struct A {
      B *p;
      B* operator -> () { return p; }
    };
    

    用法将是,

    A obj;
    obj->foo();
    

答案 1 :(得分:2)

你有一本C ++书吗?如果答案是否定的,那么为什么不呢。

如果答案是肯定的,我确信这包含在内。

无论如何,' - >' symbol是指针取消引用运算符。

---编辑---

对于那些投票不足的人来说,这是问题答案的要点,其他任何东西都是舀勺。在此上下文中详细解释指针解除引用是多余的,因为在SO和谷歌中已经解释了恶心,并且让OP执行后续搜索(在指针取消引用上)将比短时间更有益。关于那是什么的讲座。

答案 2 :(得分:2)

->运算符取消引用指针并访问该成员。它类似于写作

(*(*Surface).Logic).Scale

所以在上面,我们首先使用

推导Surface指针

*Surface

取消引用指针后,我们可以访问Logic成员

(*surface).Logic

由于Logic也是一个指针,你需要取消引用指针

*(*Surface).Logic

现在您可以访问Scale成员

(*(*Surface).Logic).Scale

正如您所看到的,这比使用->运算符要麻烦得多。对于poiner而言,他们会在一个人身上找到成员。

答案 3 :(得分:2)

嗯,c ++中的操作符箭头( - >)用于使用指针访问struct的成员。例如,你说:

struct A {
int x;
};

A* mp  = new A;

然后访问元素x并分配给你必须写的其他元素y

int y = mp -> x;

有关详细说明,请参阅此处:

http://www.cplusplus.com/doc/tutorial/structures/