可能重复:
可以为 const 引用分配一个 int?
有没有细微的差别
const int& value = 12;
和
const int value = 12;
编译的时候?如何?
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
引用延长了临时的生命,这就是为什么它有效。这只是语言的规则。(我从这里学到的)
第一个是分配了数字的 const 引用,而第二个是分配了数字的 const 左值。在使用方面,没有区别,因为“值”的用户都不能修改。
编译器显然以不同的方式对待引用,因为通常引用是其声明的类型的某个对象的别名,在这种情况下,没有变量名的数字被分配给引用。
请参阅这个问题的解释。
所以你可以这样写代码:
void f( const string & s ) {
}
( "foobar" );
等等
看起来我因为给出如此不完整的答案而被否决了。但是这个问题本质上是我链接的问题的重复。
有更详细的信息来描述该问题的不同之处。