const int&的区别value = 12和const int value = 12;

时间:2012-10-11 00:49:08

标签: c++ reference

  

可能重复:
  const reference can be assigned an int?

之间是否有任何细微差别
const int& value = 12;

const int value = 12;

编译时?怎么样?

3 个答案:

答案 0 :(得分:1)

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;

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

带参考变量的

const

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

就像:

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

const引用延长了临时的生命,这就是为什么这样做的原因。这只是语言规则。 (我从here了解到)

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

请参阅this question的解释。

所以你可以写这样的代码:

void f( const string & s ) {
}

( "foobar" );

看起来我因为给出这样一个不完整的答案而被投票。但这个问题基本上与我所链接的问题重复。

有更详细的信息可以描述这个问题的不同之处。