我有一个用c ++编写的代码,我不知道这段代码应该做什么。我试图在论坛中搜索,但我仍然感到困惑。 有人可以帮我为我定义这段代码吗?
inline void normalize() {
const float inv_length = 1.0f / get_length();
(*this) *= inv_length;
}
(* this)语法让我感到困惑,是否引用了返回值? 如果你有更多的时间,可以用Java重写它吗?
答案 0 :(得分:4)
this
是指向调用成员函数的当前对象的指针。
*this
只是取消引用该指针,因此它是对该对象的引用。
改写为Java:
void normalize() {
final float inv_length = 1.0f / get_length();
this.multiply(inv_length); // Since there is no operator overloading in Java, this had to be converted to a method.
// Note that the "this." above is optional.
}
虽然this
关键字为您提供了C ++中的指针(因为引用是在this
之后添加到C ++中的。),相同的关键字为您提供了Java引用,如{{ 3}}
答案 1 :(得分:-3)
(this)是一个指针,它存储变量的地址。它前面的星号(*)表示这是一个指针。
(*this) *= inv_length;
与
相同(*this) = (*this) * inv_length;
(* this)是指向
的任何(this)的值您的声明正在做的是它将指针中存储的值乘以inv_length。