引用和const的关系

来源:互联网 发布:交通大学网络学校 编辑:程序博客网 时间:2024/05/05 07:58

今天回顾了下effective C++,这真的是一本神书。自以为看懂,其实远非这么简单。


今天看到一个const 与引用的扯不清的关系。看我能不能扯清。


首先看一段代码

int a = 2;
const int &b = 3;
b = 3;
cout << b << endl;

这里注意了,如果改成下面的代码

int a = 2;
int &b = 3;
b = 3;
cout << b << endl;

是没法通过的。涉及到一个概念叫做常量引用,3是一个常量,只有常量引用才可以引用。其中的问题在于,编译器是为3申明了一个临时变量,把b做为临时变量的引用,如果后面的赋值为赋到有一个临时变量上,这是行不通的。所以把非const 引用申明为常量的引用。


int a = 2;
const int &b = a;
a = 3;
cout << b << endl;

这段代码是行得通的,而且b现在修改为3,就表明这里的const引用只是形式上的,并不是逻辑上,这部分在effective C++上有讲。下回我补上。


0 0