整数变量如何存储对整数的引用?

时间:2013-08-17 08:10:43

标签: c++

我在c ++中搜索引用变量的解释,我发现了这个:

#include<iostream>
int a=10;   //global 'a' so that fun doesn't return a reference of its local variable
int & fun();
int main()
{
    int p = fun(); //line to be noted
    std::cout << p;
    return 0;
}

int & fun()
{
    return a;
}

这很有用,所以这样做:

#include<iostream>
int a=10;   //global 'a' so that fun doesn't return a reference of its local variable
int & fun();
int main()
{
    int &p = fun(); //line to be noted
    std::cout << p;
    return 0;
}

int & fun()
{
    return a;
}

我的问题是整数变量如何存储引用值,就像在第一个代码片段[第6行]中所做的那样。不是代码片段2 [第6行]中描述的正确语法,即我们应该定义一个引用变量(int&amp; p)来携带引用而不是常规的整数变量? 编译器不应该给出错误或至少发出警告吗?我正在使用GCC 4.7.1 64位。

2 个答案:

答案 0 :(得分:2)

好的,得到了​​...... @chris:你是对的..当我这样做的时候:

int p = fun();
p++;
std::cout << p << endl << a;

它显示结果为11和10.因此只有a的值被复制到p中而p不会成为a的别名。 但是当我用第二个代码尝试相同时,它显示a和p的值都是11.因此p成为a的别名。

答案 1 :(得分:0)

不,无论如何都可以。

在这种特殊情况下甚至不需要返回值引用,因为您不是试图“动态”修改返回值或稍后修改“a”,例如,当您为此目的使用算术运算符重载时