2.2 左眼看量
现在,让我们回到Helloworld,来重温一下我们学习C++遇到的第一种概念:量。
一提到“量“,我们脑子里面立刻会反映出两个词”常量“、”变量“,很好,我们就从这里开启我们的旅程吧!
【2.2.1 常量向左走】
有的时候,我们在程序里面定义一个量,但是我们并不希望由于我们的大意或者其他什么原因让这个值被改变了,换句话说就是我们希望这个量恒定不变。于是,有些聪明的家伙就发明了常量这种概念。常量这个在今天看起来稀疏平常的东西其实也有它自己的历史沿革的。在C的世界里,我们用一种叫做宏的方式来告诉编译器:不要让任何东西改变下面这个量的值。我们这样写:
#define PI 3.14159
Ok,那么为什么在c++中这种写法被抛弃了呢?肯定是有原因的,我们来看一看他有什么缺点:
(1). 没有类型。上面的PI用户并没有办法来干预这个量的类型,这个大大限制了它的灵活性,既然用户没法定义类型,编译器自然就没办法对它进行类型检查。
(2). 没有地址。So,我们没有办法传递一个常量的指针或者引用来做一些事情。
(3). 没有作用域。它的生命周期是从定义开始一直到文件结束。
好啦,我们本着喜新厌旧的原则对它数落了一通,下面让我们来认识一下它的升级版本——const。
Const是C++中定义的常量标识符,用一下的方式来定义一个常量:
Const int x = 100;
Ok,和前面的对比一下,就会发现:有类型有地址,同时也有了作用域,如果你试图改变一个const量的值,编译器就会毫不吝啬的给你一个大大的error。
下面强调两点声明常量的注意事项:
First,声明常量的时候必须要初始化,否则编译器对什么进行性保护呢?
Second,常量的值可以使十进制、八进制、十六进制、浮点数或者字符(字符串用单引号括起来),看到没有,没有二进制。
好啦,就说到这里,还有什么不明白的可以翻看教材或者Google。实际上呢常量的概念还是比较简单的,但是事情往往是这样发展的:单个概念很简单,几个简单的概念扎堆在一起问题就复杂起来了,这点会在我们后面的文字里面有深刻的体现,敬请期待。