C++中的运算符重载和&符号

3

我是一名C++新手,可能有一个很菜鸟的问题。我看到过这样的写法:

可能是重复问题:
类名后面加上&(比如 ostream& operator <<(…))是什么意思?

请问这个“&”符号是什么意思?

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

    return *this;
}

我一直在想为什么Vector3f后面会有一个ampersand (&)符号,它到底起到了什么作用呢?我在任何地方都找不到解释。最重要的是,这种情况和上面那个有什么区别呢?

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

    return *this;
}
2个回答

4

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


那这是像传递对象的指针吗?那为什么他们没有传递指针而是传递了引用呢? - Martin Marinov
@MartinMarinov 因为它是 C++ 而不是 C。参考资料提供了不同的语法和语义。如果你不知道它们是什么,我建议你读一本好的入门 C++ 书籍。 - Luchian Grigore

2
第一个函数通过引用传递了一个 Vector3f,并通过引用返回了一个 Vec3torf。第二个函数按值传递并返回(即在语义上它复制了参数以及 *this)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接