3

可能重复:
在像 ostream& operator <<(...) 这样的类名之后使用 & 符号是什么?

我是 C++ 新手,我可能有一个非常愚蠢的问题。我见过这样的事情:

Vector3f & operator = (Vector3f & obj)
{
    _item[0] = obj[0];
    _item[1] = obj[1];
    _item[2] = obj[2];

    return *this;
}

我想知道为什么在 Vector3f 之后有一个 & 符号。它在做什么魔法?我在任何地方都找不到任何解释。最重要的是,上面的东西和

Vector3f operator = (Vector3f obj)
{
    _item[0] = obj[0];
    _item[1] = obj[1];
    _item[2] = obj[2];

    return *this;
}
4

2 回答 2

3

这是 C++ 的按引用传递和按引用返回的语法。它只是意味着参数是调用上下文中对象的别名,而不是副本,并且类似地,返回的对象实际上是*this,而不是副本。

于 2012-10-02T13:24:31.207 回答
2

第一个接受 aVector3f引用,并返回 aVec3torf引用。第二个按值获取和返回(即在语义上它会复制参数以及*this)。

于 2012-10-02T13:24:27.107 回答