Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ const int与amp;值=12,常数int值=12;_C++_Reference - Fatal编程技术网

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