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是同一个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值