什么"&符号运算符"类和变量之间的平均值?

时间:2018-02-22 21:58:32

标签: c++

我在下面看到了以下代码,我很困惑:

void ActionAtomistic::makeWhole() {
for(unsigned j=0; j<positions.size()-1; ++j) {
    const Vector & first (positions[j]);
    Vector & second (positions[j+1]);
    second=first+pbcDistance(first,second);
  }
}

谁能告诉我什么&#34;&amp;&#34;用于这里?我用Google搜索&#34; c ++&amp;类&变量&#34;但没有找到答案。

更新:我知道什么参考,但认为Vector和&#34;&amp;&#34;之间不应该有任何空格。谢谢你们澄清一下。

4 个答案:

答案 0 :(得分:4)

这意味着first引用(在本例中为const引用),类型为Vector的对象,而不是输入Vector

详细了解参考资料here

答案 1 :(得分:2)

这被称为参考。我通常会编写像Type& name之类的引用来清楚地表明引用是类型的一部分。

引用就像指针更容易使用但有一些限制。以下是您可以使用引用的示例:

void add1ToThisNumber(int& num) {
    num += 1;
}
// elsewhere...
int myNumber = 3;
add1ToThisNumber(myNumber);
cout << myNumber; // prints 4

答案 2 :(得分:1)

reference(在本例中)基本上是另一个变量的别名。虽然以下内容不适用于第一种情况(因为您的引用为const),但引用可用于修改它们所引用的对象。举个例子:

int c = 5;
int& d = c;
d = 12; // c is set to 12

在您的特定情况下,引用是不可变的别名,因此无法通过positions[j]修改first

在第二种情况下,执行second = variable将评估为positions[j + 1] = variable

答案 3 :(得分:1)

&根据背景有不同的含义。

  1. 声明一个类型。

    int var;
    int& ref1 = var;           // Declares a reference to a variable
    int const& ref2 = var;     // Declares a const reference to a variable
    
    int& foo();                // Declares foo() whose return type is reference to an int
    void bar(int&);            // Declares bar whose argument type is reference to an int
    
    struct Foo
    {
       int& bar;              // Declares bar to be member variable of the
                              // class. The type is reference to an int
    };
    
  2. 获取变量的地址(真正的任何左值)

    int var;
    int* ptr = &var;           // Initializes ptr with the address of var
    
    int arr[4];
    int* ptr2 = &(arr[3]);     // Initializes ptr2 with the address of the
                               // last element of arr
    
  3. 执行按位AND操作。

    int i = <some value>;
    int j = <some value>;
    int k = (i & j);          //  Initializes k with the result of computing
                              //  the bitwise AND of i and j
    
  4. 您的代码中的内容是第一次使用。

    const Vector & first (positions[j]);
    

    该行声明first是对const的{​​{1}}引用。