4

可能重复:
可以为 const 引用分配一个 int?

有没有细微的差别

const int& value = 12;

const int value = 12;

编译的时候?如何?

4

3 回答 3

2
int value = 12; 

这里的“价值”是价值变量。

其中 int& 用于创建其他变量的引用变量(别名)。喜欢

int i;  
int& j=i;

j 和 i 指的是相同的内存位置。it c++ concept.

但是不能为内存位置创建引用变量。所以在我的想法中,下面的表达式是错误提示

int& i = 12;  `Will not compile even.`    

关于const

const关键字用于创建只读变量。一旦初始化,变量的值就不能改变。考虑以下代码:

const int x = 2;  // const var can be initialized, not modified thereafter
x = 10;           // error - cannot modify const variable

错误:错误:只读变量“x”的赋值

Expression 也可以在类型的两侧使用 const 。

 const int value = 12;
 int const value = 12;

两个表达式是相同的(对于简单的非指针数据类型)。从这里学习 我们看到引用最常见的地方是作为函数参数或返回值。

带有引用变量的 const

创建了一个临时对象,将const引用绑定到它是合法的,但将其绑定到非引用是非法的const

就像:

const int& reference_to_const_int = int(20);  //LEGAL
      int& reference_to_const_int = int(20);  //ILLEGAL

const引用延长了临时的生命,这就是为什么它有效。这只是语言的规则。(我从这里学到的)

于 2012-10-11T04:29:31.970 回答
0

第一个是分配了数字的 const 引用,而第二个是分配了数字的 const 左值。在使用方面,没有区别,因为“值”的用户都不能修改。
编译器显然以不同的方式对待引用,因为通常引用是其声明的类型的某个对象的别名,在这种情况下,没有变量名的数字被分配给引用。

于 2012-10-11T01:08:27.713 回答
-1

请参阅这个问题的解释。

所以你可以这样写代码:

void f( const string & s ) {
}

( "foobar" );

等等

看起来我因为给出如此不完整的答案而被否决了。但是这个问题本质上是我链接的问题的重复。

有更详细的信息来描述该问题的不同之处。

于 2012-10-11T00:53:32.143 回答