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

How could an integer variable store a reference to integer?

本文关键字:整数 引用 存储 变量 何存储      更新时间:2023-10-16

我在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位。

好的,明白了@克里斯:你是对的。。当我这样做的时候:

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

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

不,不管怎样都可以。

在这种特殊情况下,返回值引用甚至是不必要的,因为您没有试图在"动态"或稍后修改返回值"a",就像您为此目的使用算术运算符重载时一样,例如