c++ - C++ 中的运算符重载和符号

标签 c++ class operator-overloading

<分区>

Possible Duplicate:
What's the ampersand for when used after class name like 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;
}

最佳答案

这是 C++ 的按引用传递和按引用返回语法。这只是意味着参数是调用上下文中对象的别名,而不是拷贝,而且,同样,返回的对象实际上是 *this,而不是拷贝。

关于c++ - C++ 中的运算符重载和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691128/

相关文章:

c++ - (c++) 需要帮助为我的类 Polynomial 重载 operator+

python - 使用隐式类型转换实现逐点算术

使用模板的 C++ 重载输出运算符

C++: header 问题

c++ - 异常基础 : why is the while loop turning into an infinite loop?

C++ 在运行时确定多态对象的类型

c++ - 在 C++ 中组合接口(interface)

c++ - 如何组织更大的多类 GUI 项目?

c++ - 检查类是否派生自特定类(编译、运行时均可用)

c++ - 寻找 C++ 多媒体编辑图形框架?