【问题标题】:Use of the '&' symbol in C++ [duplicate]在 C++ 中使用“&”符号 [重复]
【发布时间】:2016-04-30 14:18:27
【问题描述】:

我意识到这可能是一个愚蠢的问题,但我无法在任何地方找到答案...... C++ 函数中“&”符号的目的是什么?比如

vec2& operator+(vec2& left, const vec2& right)
{
    return left.add(right);
}

我正在关注一个 youtube 系列,这有点超出我的想象,但我做得很好,因为所有代码都在那里。但是那个“和”符号不断出现,我真的很想知道它是什么......它与类有关吗?

这正是我正在观看的内容:https://www.youtube.com/watch?v=-peYVLeK0WU 来自“TheChernoProject”频道的人正在制作一个简单的游戏引擎。此外,这是 Visual Studio 2013 C++,如果这有什么改变的话。

【问题讨论】:

标签: c++


【解决方案1】:

“&”可以表示几种不同的含义,具体取决于上下文。

您在上面给出的示例是 C++“引用运算符”:

Need help understanding reference operator(C++) in specific functions

引用运算符特定于 C++。 “&”也可以用作“地址”运算符,在 C 和 C++ 中都可以使用:

What are the differences between a pointer variable and a reference variable in C++?

最后,“&”也可以是位“AND”运算符:

http://www.cprogramming.com/tutorial/bitwise_operators.html

【讨论】:

  • 在这种情况下,& 不是运算符。
【解决方案2】:

表示按引用传递,传递的对象可以直接操作。例如,当您编写 public void TestMethod(obj value) 时,您对 value 所做的任何更改都不会影响原始值(即复制),但是当您通过引用传递时,您对 value 所做的任何更改都会更改原始值。

【讨论】:

    【解决方案3】:

    在您在问题& 中提供的代码中,符号用于在您的operator+ 函数中通过引用传递参数。如果您删除它,您的代码仍然能够编译并且将以相同的方式运行(在您的情况下),但参数将按值传递到您的 operator+ 函数中(将被复制)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多