3

我正在寻找关于 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 &p)来携带引用,而不是一个常规的整数变量?编译器不应该给出一个错误或至少一个警告吗?我正在使用 GCC 4.7.1 64 位。

4

2 回答 2

2

好的……@chris:你是对的……当我这样做时:

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

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

于 2013-08-17T08:33:34.617 回答
0

不,无论哪种方式都很好。

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

于 2013-08-17T08:15:31.157 回答