C++ const int与amp;值=12,常数int值=12;
可能重复:C++ const int与amp;值=12,常数int值=12;,c++,reference,C++,Reference,可能重复: 两者之间有细微的区别吗 const int& value = 12; 及 什么时候编译?如何操作?请参阅的说明 因此,您可以编写如下代码: void f( const string & s ) { } ( "foobar" ); 等等 看来我因为给出如此不完整的答案而被否决了。但这个问题本质上是我联系的问题的重复 有更详细的信息来描述这个问题的区别。第一个是分配了一个数字的常量引用,而第二个是分配了一个数字的常量左值。在用法方面,没有区别,因为“值”的用户不能
两者之间有细微的区别吗
const int& value = 12;
及
什么时候编译?如何操作?请参阅的说明
因此,您可以编写如下代码:
void f( const string & s ) {
}
( "foobar" );
等等
看来我因为给出如此不完整的答案而被否决了。但这个问题本质上是我联系的问题的重复
有更详细的信息来描述这个问题的区别。第一个是分配了一个数字的常量引用,而第二个是分配了一个数字的常量左值。在用法方面,没有区别,因为“值”的用户不能修改这两个值。
编译器显然对引用的处理方式有所不同,因为引用通常是其声明类型的某个对象的别名,在这种情况下,不带变量名的数字被分配给引用
int value = 12;
这里的“value”是值变量
其中int&用于创建其他变量的引用变量(别名)。像
int i;
int& j=i;
j和i表示相同的内存位置<代码> IT C++概念。< /代码> < /P>
但无法为内存位置创建引用变量。所以在我看来,下面的表达式是错误提示
int& i = 12; `Will not compile even.`
关于常数:
const关键字用于创建只读变量。一旦初始化,变量的值就不能更改。考虑下面的代码:
const int x = 2; // const var can be initialized, not modified thereafter
x = 10; // error - cannot modify const variable
错误:错误:只读变量“x”的赋值
表达式也可以在类型的两侧使用常量
const int value = 12;
int const value = 12;
这两个表达式相同(对于简单的非指针数据类型)。学习
我们看到的引用最常见的地方是函数参数或返回值
带有参考变量的常数:
创建了一个临时变量,将常量
引用绑定到它是合法的,但将它绑定到非常量
引用是非法的
就像:
const int& reference_to_const_int = int(20); //LEGAL
int& reference_to_const_int = int(20); //ILLEGAL
const
引用可以延长临时变量的寿命,这就是为什么它可以工作的原因。这只是语言的规则。(我从中学习)const int&some\u reference=(some右值)代码>?这样做有效吗?后者可以用作常量表达式,前者只是一个延长寿命的临时表达式。@jogojapan:这解释了前者是什么(即为什么它是合法的以及它在做什么),但它不能解释前者和后者之间的实际差异(前面提到的常量表达式就是一个例子)@ildjarn我假设“它在做什么”部分包含了理解前者和后者区别所需的所有信息。我链接的问题非常详细地解释了这一点:对不起,但这是不正确的<代码>常量int&val=12代码>有效,应编译。见@jogojapan编辑我的答案:谢谢
const int& reference_to_const_int = int(20); //LEGAL
int& reference_to_const_int = int(20); //ILLEGAL