C++ 为什么常量有意义?

C++ 为什么常量有意义?,c++,reference,constants,C++,Reference,Constants,可能重复: 该计划: int fun() { return 1; } int main() { const int& var = fun(); return 0; } 我的问题是,为什么我必须在var定义之前加上const?如果不是,g++将给我一个错误,类似于“从临时类型“int”初始化类型为“int&”的非常量引用无效” “const”是什么意思 在这种情况下,您需要const,因为引用初始化需要一个带有地址的变量,而不仅仅是一个值。因此,编译器

可能重复:

该计划:

int fun()
{
    return 1;
}

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

    return 0;
}
我的问题是,为什么我必须在var定义之前加上const?如果不是,g++将给我一个错误,类似于“从临时类型“int”初始化类型为“int&”的非常量引用无效”
“const”是什么意思

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

如果要显式声明变量,
const
将是不必要的:

int tmp = fun();
int &var(tmp);

阅读本文:。您已经抑制了错误消息,但您的代码打算做什么?在给定的代码中赋值后,您无法访问
var
,因为它是对临时变量的引用。最简单的答案是:否则您可能会更改函数输出,当然是nonces。如果您有可以更改的内容,请将其设置为非常量引用。这是如何使用“const”的简单、直观(且正确)的规则。@Greg:该临时变量的生存期将延长到作用域的末尾。@cheers-sandhth.-Alf:太棒了。我想我甚至都不会考虑尝试。