c++ - 为什么 const 有意义?

标签 c++ reference constants

<分区>

Possible Duplicate:
How come a non-const reference cannot bind to a temporary object?

这个程序:

int fun()
{
    return 1;
}

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

    return 0;
}

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

最佳答案

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

如果显式声明变量,则不需要 const:

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

关于c++ - 为什么 const 有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894475/

相关文章:

java - 设置 HashMap 线程安全吗?

C++ : Structs, 运算符 "new"和 const

struct - const 值在匿名结构字段中的作用是什么?

c++ - 无法访问类中声明的私有(private)成员

c++ - 为什么 lambda 捕获的这个指针被破坏而其他变量没有

javascript更改对象变量引用

objective-c - 在 Debug (Objective-C) 中编译时出现 77 unsigned long const 警告

c++ - 使用 VS2015 更改应用程序的入口点

c++ - 在 C/C++ 中将指针作为参数传递?

c++ - 在 C++ 中,引用限定符是否表达某种形式的子类型?