Possible Duplicate:
const reference can be assigned an int?const int&value = 12和const int value = 12之间的区别;
有
const int& value = 12;
和
const int value = 12;
编译时
之间的细微差别?怎么样?
Possible Duplicate:
const reference can be assigned an int?const int&value = 12和const int value = 12之间的区别;
有
const int& value = 12;
和
const int value = 12;
编译时
之间的细微差别?怎么样?
请参阅this question的说明。
所以你可以这样写代码:
void f(const string & s) {
}
("foobar");
等
貌似我得到downvoted给了这样一个不完整的答案。但这个问题本质上与我联系的一个重复。
有更详细的信息来描述这个问题的区别。
第一个是const-reference分配的数字,第二个是const的左值分配的数字。在使用条款中,没有区别,因为用户不能修改“值”。
编译器显然不同地处理引用,通常引用是它声明的类型的某个对象的别名,在这种情况下,没有变量名称的数字被分配给引用。
int value = 12;
这里'值'是值变量。
其中是int &用于创建其他变量的引用变量(别名)。像
int i;
int& j=i;
j和我指的是相同的内存位置。 it c++ concept.
但是无法为存储位置创建引用变量。所以我的想法下面的表达式是错误PROMT
int& i = 12; `Will not compile even.`
关于常量:
的常量关键字用来创建一个只读变量。一旦初始化,变量的值就不能改变。考虑下面的代码:
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;
两个表达式都是相同的(对于简单的非指针数据类型)。了解here 我们看到的最常见的地方是参考函数参数或返回值。
常量与参考变量:
临时被创建,并且是合法的一个const
参考绑定到它,但非法将其绑定到一个非const
之一。
它就像:
const int& reference_to_const_int = int(20); //LEGAL
int& reference_to_const_int = int(20); //ILLEGAL
一个const
参考延伸的临时的生活,这就是为什么这个工程。这只是语言的一个规则。 (我从here得知)
对不起,但这是不正确的。 'const int&val = 12;'是有效的,应该编译。请参阅http://stackoverflow.com/questions/10801894/const-reference-can-be-assigned-an-int – jogojapan
@jogojapan编辑我的答案:谢谢 –
'const int&some_reference =(有些右值);'?这甚至工作吗? – cHao
后者可以用作一个常量表达式,前者仅仅是一个延长生命周期的临时表达式。 – ildjarn
@jogojapan:这解释了前者是什么(即为什么它是合法的以及它在做什么),但它不能解释前者和后者之间的实际差异(上述常数表达式就是一个例子)。 – ildjarn