我在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位。
答案 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”,例如,当您为此目的使用算术运算符重载时