1

可能重复:
为什么非常量引用不能绑定到临时对象?

这个程序:

int fun()
{
    return 1;
}

int main()
{   
    const int& var = fun();

    return 0;
}

我的问题是为什么我必须在 var 定义之前加上一个 const ?如果不是,g++ 会给我一个错误,类似于“从‘int’类型的临时值对‘int&’类型的非常量引用进行无效初始化。” 'const' 是什么意思?

4

1 回答 1

3

在这种情况下,您需要const,因为引用初始化需要一个带有地址的变量,而不仅仅是一个值。因此编译器必须创建一个匿名变量,您只能通过引用访问它;编译器不希望您访问未声明的变量。

如果您要显式声明变量,const则没有必要:

int tmp = fun();
int &var(tmp);
于 2012-08-10T02:06:46.040 回答