C++11 关键字 const 到底怎么用?

Const 的作用及历史

const (computer programming) - Wikipedia

一、历史#

按理来说,要想了解一件事物提出的原因,最好的办法就是去寻找当时的历史背景,以及围绕这件事所发生的故事。

可是非常抱歉,我并没没有找到C语言中const 提出的背景,但是一个可以参考的历史是,常量这种数据形式早在汇编语言中就有所体现,汇编语言中的constant 是一个确定的数值,在汇编阶段就可以确定直接编码在于指令代码中,不是保存在寄存器中的可以变化的量。

常量是需求,C 语言没理由不保留这个传统,自然而然的const 关键字出现了。

二、C和C++的异同点#

顾名思义,const 最基础的作用就是保证数据不会被修改,仅仅可读而已。这就好比一份没有write 权限的文件一样,只能远观而已。

const 是C语言32个关键字(C++中有49个)中的一个,主要起类型修饰的作用,可以理解为变量的属性,比方说const int a = 10 从右往左看int a = 10 是定义并初始化了一个变量a 等于10,随后使用const 修饰这个变量,告诉编译器,这个变量是不可修改的。为了维护程序的安全性,由于const 一旦修饰就无法再更改了,那么const int a; 会生成一个值随机且永远无法修改的量,这样非常不安全,所以C 的编译器会要求你必须在定义的时候就立马初始化。从这里也可以看出const关键字的强硬之处。

到底const该放在哪?#

在详细讨论const的用法之前,必须首先明白,const 是C语言中的一个类型限定符(type quailier),是类型的一个部分,且const 越靠近谁,就修饰谁是常量类型。

从C语言的基础数据类型来看,基本上可以抽象为一下几个类别

而C++中由于引入了几种新的编程模式,const 的作用范围又进一步被扩充。