我正在进行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->()给定类的重载.如果你正在使用的类确实重载了这个操作符,那么行为将是不同的,由类定义 - 它几乎可以返回它想要的所有内容.