const限定符的用法总结
一.初始化和const
* const对象必须进行初始化:const对象创建后就不可改变,所以在const对象上不能执行改变其内容的操作;
* 在不改变其内容的情况下,还有一种初始化方法就是用一种对象初始化一个const对象,不管其是否为const对象;
*
const对象被设定为仅在文件内有效,所以在多文件中定义的同名const变量是相互独立的。要在文件间共享的方法是:对于const变量不管是声明还是定义都要添加extern,这样只需定义一次,其他用到的地方只需声明即可
二.const的引用:对常量的引用不能用于修改它所绑定的对象
引用的类型必须与其所引用对象的数据类型一致,初始化常量引用时允许使用任意表达式作为其初始值,尤其,允许一个常量引用绑定非常量的对象,字面值,甚至一个表达式;
也就是说,常量引用对于引用对象本身是不是一个常量不做限定,只限定引用可参与的操作:即不能通过常量引用修改它所绑定的对象,但是,如果对象是非常量,允许通过其他途径改变其值。
三.指针和const
1.指向常量的指针:
要存放常量对象的地址只能使用指向常量的指针,但指向常量的指针可以指向一个非常量对象;
同const引用一样,不能通过指向常量的指针改变其所指对象,但不影响这个对象的值通过其他方式改变
2.常量指针:同引用不同,指针是常量,所以指针本身可以为常量
“*”放在const之前,说明指针是一个常量,不变的是指针本身而不是指向的对象,所以可以通过常量指针修改其所指向的非常量对象
常量指针必须初始化,且初始化完之后它的值,即地址不再改变
四.顶层const与底层const
* 顶层const表示对象是常量,作用于对象本身,如常量指针;底层const表示指向的对象是常量而不是对象本身,如引用的const都是底层const
* 在对象执行拷贝操作时常量时顶层const和底层const最明显,这部分区分在函数部分详细说明。