C是 - >相当于Objective-C中的点符号

MCK*_*pur 6 c c++ objective-c

我正在进行Box2D编程,并且抬头,我是C++和C的总菜鸟.我是一个Objective-C家伙,这就是为什么我对语言的理解变得非常困难.特别:

->
Run Code Online (Sandbox Code Playgroud)

基本上我理解这用于引用不同的方法或函数或变量/属性,如下所示:

body->GetWorld()->DestroyBody(body);
Run Code Online (Sandbox Code Playgroud)

这相当于Objective-C中的点符号:

// made up example
[body.world destroyBody];
Run Code Online (Sandbox Code Playgroud)

要么

[self destroyBody:body.world];
Run Code Online (Sandbox Code Playgroud)

或类似的东西?我真的不明白这一点.有人可以告诉我这是什么.谢谢!

Gri*_*wes 10

我不知道的Objective-C,但我可以解释之间的差异->,并.在C和C++,希望帮助.

.是允许您访问struct/class实例的成员的运算符.a->b(*a).b- 所以它首先取消引用指针,然后访问指针所指向的实例的成员.

此外,还有一种情况是Luchian提到过 - operator->()给定类的重载.如果你正在使用的类确实重载了这个操作符,那么行为将是不同的,由类定义 - 它几乎可以返回它想要的所有内容.