const限定符(一)

当有时候我们希望定义一种变量,它的值不会被改变。比如定义一个变量表示缓冲区的大小。这样当缓冲区大小不合适的时候,我们可以很方便的调整,另一方面也可以随时防止程序一不小心修改这个值,在C++中,我们可以用const关键字对变量的类型加以限定。

因为const对象一旦建立之后就不可改变,所以const对象必须初始化:

> const int ival = 42; //正确
> const int ival2; //错误:没有初始化

有时候程序会包含多个文件,那么每个用了const对象的文件都必须得能访问它的初始值才行。为了做到这一点,就必须在每一个用到变量的文件中对它进行定义,默认情况下,const对象被设定为仅在当前文件内有效。当多个文件中出现了同名的const变量时候,其实相当于在不同文件中分别定义了独立的对象。在某些时候,const变量的初始值不是一个常量表达式,但又确实有必要在文件间共享。这种情况下,我们不希望编译器为每个文件生成独立的变量。相反的,我们希望这类const对象像其他的对象一样工作,换句话说,我们希望在一个文件中定义const,在多个文件中声明并使用他。
解决的办法就是,对于const变量不管是声明还是定义都添加extern关键字,这样只需要定义一次就可以了:

//file_1.cpp定义并初始化了一个常量,该常量能被其他的文件访问
extern const int bufSize = fcn();
//file_1.h头文件
extern const int bufSize; //与file_1.cpp中定义的bufSize是同一个
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容