c++中const关键字的使用
本篇文章,主要是对《C++ Primer》中关于const限定符的总结,加一点自己的理解。
初始化和const
const的使用方式如:const int bufsize=512
这样就把bufsize定义成了一个常量。任何试图为bufsize赋值的行为都将引发错误:bufsize=512;//会报错
const int i=get_size();//正确:运行时初始化
const int j=42; //正确:编译时初始化
const int k; //错误:k是一个未经初始化的常量
在不改变const对象的操作中还有一种是初始化,如果利用一个对象去初始化另外一个对象,则它们是不是const都无关紧要。
int i=42;
const int ci=i; //正确:i的值被拷贝给了ci
int j=ci; //正确:ci的值被拷贝给了j
尽管ci是整型常量,但无论如何ci中的值还是一个整型数。ci的常量特征仅仅在改变ci的操作时才会发挥作用。当用ci去初始化j时,根本就无需在意ci是不是一个常量。拷贝一个对象的值并不会改变它,一旦拷贝完成,新的对象就和原来的对象没什么关系了。
const int bufSize=512; //输入缓冲区大小
编译器将在编译过程中把用到该变量的地方都替换成对应的值。也就是说,编译器会找到代码中所有用到bufSize的地方,然后用512替换。
const的引用
可以把引用绑定到const对象上,就像绑定到其他对象上一样,我们称之为对常量的引用(reference to const)。与普通引用不同的是,对常量的引用不能被用作修改它所绑定的对象:
const int ci=1024;
const int &r1=ci; //正确:引用及其对应的对象都是常量
r1=42; //错误:r1是对常量的引用
int &r2=ci; //错误:试图让一个非常量引用指向一个常量对象
先写(抄)到这,后面复习的时候再补全。