&安培;在函数声明返回类型中

时间:2013-04-14 03:28:44

标签: c++ function return memory-address

&以下是什么意思?

class Something
{
 public:
   int m_nValue;

   const int& GetValue() const { return m_nValue; }
   int& GetValue() { return m_nValue; }
};

此代码取自here

1 个答案:

答案 0 :(得分:5)

It means return value by reference

   int& GetValue()
     ^ Means returns a reference of int

int i = 10;

int& GetValue() {
    int &j = i;
    return j;
}

ji的引用,是一个全局变量。

注意:在C ++中,您有三种变量:

  1. 值变量,例如int i = 10
  2. 参考变量,例如int &j = i; 引用变量创建其他变量的别名,两者都是相同内存位置的符号名称。
  3. 地址变量:int* ptr = &i。叫做指针。指针变量用于保存变量的地址。
  4. 声明中的尊重

       Pointer:
               int  *ptr = &i;
                    ^      ^  & is on the left side as an address operation
                    |
                    * For pointer variable.
    
       Reference:
    
               int &j = i;
                   ^
                   | & on the right side for reference
    

    请记住,在C中,您只有两种变量值和地址(指针)。引用变量在C ++中,引用很容易使用,如值变量和指针变量。

    指针就像:

                          j = &i;
    
                          i                   j
                       +------+            +------+
                       | 10   |            | 200  |
                       +------+            +------+
                         202                 432
    

    参考文献如下:

                       int &j = i;
    
                        i, j
                       +------+
                       | 10   |
                       +------+
    

    没有为j分配内存。它是内存中相同位置的别名。

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

    1. 指针可以重新分配任意次数,而初始化后无法重新分配引用。
    2. 指针可以指向NULL,而引用永远不会指向NULL
    3. 您无法使用指针
    4. 获取引用的地址
    5. 没有“参考算术”(但您可以获取引用所指向的对象的地址,并在其上执行指针算术,如& obj + 5)。
    6. 因为你评论过,你对指针和引用变量之间的差异有疑问,所以我强烈建议你从我在答案中给出的链接中阅读相关页面。