const引用
ivankevin
posted @ 2010年9月28日 10:28
in cpp_primer
with tags
cpp_primer
, 2342 阅读
/*我实质上是一个很懒的人。*/
/*所以我愿意思考更多,以达到事半功倍的效果。*/
P51说了const引用。
先上注解:“const引用”的意思是“指向const对象的应用”。类似地“非const引用“表示指向非const类型的引用。
int i = 42; int &r = i;
这个当然是ok的。
而
const int i = 42; const int &r = i;
当然也是ok的。
至于
const int i = 42; int &r = i;
是不行的,编译错误。因为如果可以的话,修改r会变成修改i,而i是不可修改的。
最后
int i = 42; const int &r = i; i = 52; //OK r = 52; //Error, r is read only.
这个primer没有提到,经我那破旧的g++(win下)测试,实际效果应该是i可以被修改,这时候r的值也会被修改。但尝试给别名r赋值则不行。
嗯我就写书上没有的结果好了。
2010年9月29日 00:18
书读百遍,其义自见。
终于看懂了这个注解;
非const引用只能绑定到与该引用同类型的对象。
const引则可以绑定到(注:与自己)不同但相关的类型的对象或者绑定到右值。