今天回顾了下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++上有讲。下回我补上。