const修饰符 小结

来源:互联网 发布:念诗 知乎 编辑:程序博客网 时间:2024/06/05 18:14
1. const 和extern
默认状态下const对象仅在文件内有效
当编译器以初始化的方式定义一个const对象时,编译器将在编译过程中吧用到该变量的地方都替换成对应的值,
为了执行上述替换,编译器必须知道变量的初始值,所以通常const的有效域就在本文件
为了能在其他文件中使用该const变量 可以使用 extern 修饰符
例://file_1.cc
extern const int bufsize= fcn();//或者extern const int bufsize=10
//file _1.h
extern const int bufsize;
2.const的引用
当把引用绑定到const对象上时,即对常量的引用,该引用不能修改它所绑定的对象

3.指针和const
指向常量的指针:不能用来改变其所指向对象的值
const double   pi = 3.14;
double *ptr = &pi//error普通指针不能接受常量指针
const double *cptr = pi// cptr 可以指向双精度常量
*cptr =42 // error不能给 *cptr赋值
const指针:指针是常量 必须初始化   指针保存的地址不能更改
int * const p;

3.顶层const与底层const
顶层const表示 :指针本身就是常量
底层const表示 :指针指向的对象是一个常量

4.const 在函数前和const在函数后的区别
const 放在函数后表示这个函数是常成员函数, 常成员函数是不能改变成员变量值的函数。
如果返回值为某个对象为const或某个对象的引用为const   ,则返回值具有const属性,则返回实例只能访问类a中的公有数据成员和const成员函数,并且不允许对其进行赋值操作,这在一般情况下很少用 到