C++ const 限定符

来源:互联网 发布:linux查看硬盘情况 编辑:程序博客网 时间:2024/06/11 01:56

定义与初始化

有时我们希望定义这样一个变量,它的值不能被改变。

const int bufSize = 512;    //输入bufSize的大小bufSize = 512// **错误**!!试图向const对象写值
const int j = get_size();   //正确,运行时初始化const int j = 42;           //正确,编译时初始化const int k;                //**错误**,没有初始化

可以用不是const的对象去初始化一个const对象,反之亦可

int i = 42;const int ci = i;int j = ci;

const与extern const

当以编译时初始化的方式定义一个const对象时,将在编译过程中将用到这个变量的地方都替换成对应的值。
默认情况下,const对象被设定为仅在文件内有效

//file_1.cc定义并初始化了一个常量,该常量能被其他文件访问extern const int bufSize = fcn();//file_1.h 头文件extern const int bufSize; //与file_1中定义的是同一个bufSize

const的引用

可以把引用绑定到const对象上,对常量的引用,不能被用作修改它所绑定的对象:

const int ci = 1024;const int &r1 = ci;         //正确r1 = 42;                    //**错误**, r1是对常量的引用int &r2 = ci;               //**错误**, 试图让一个非常量引用指向一个常量对象

例外情况是:在初始化常量引用时运行用任意表达式作为初始值,只要该表达式的值能转换成引用的类型即可。const 引用可能应用一个非const对象。


const和指针

指向常量的指针不能用于改变其所指对象的值。要想存放常量对象的地址,只能使用指向常量的指针。

允许把指针本身定义为常量。常量指针必须初始化,而且一旦初始化完成,它的值(地址)就不能再改变了。

原创粉丝点击