const
基本用法
const限定符指示一个变量的值是只读的,也就是不可以改变的。常常用在程序员不希望其他人改变的这个变量的值。
e.g.const double pi=3.14
跨文件使用
实际上const限定符只对文件内有效,也就是说它的作用域仅在一个文件内,这一点是避免程序员对一个变量在不同文件中的重复定义引发的矛盾。也就是说,你在一个文件中定义了const double pi=3.14,你在另一个文件中也想使用这个变量你就不得不再次定义一次,但是这样又过于麻烦,所以如果我们想在多个文件中访问用一个变量我们可以使用extern限定符,这个限定符有两个含义,第一个含义是所限定的变量在这个文件中被定义,那么这个变量在其他的文件中是可以访问的,第二个含义是这个变量假如没有定义那么它的定义应该在其他的文件查找。这样我们在需要跨文件使用的const常量的定义和声明上都加上extern限定符。
const引用
const引用也称常量引用,指的是加了const限定符的引用。一般情况下的const引用有两个初始化的方法。
简单初始化
这种初始化方法情况下,常量引用的初始化和其他引用的初始化相同。常量引用的初始化允许const修饰的同类型的变量或者非const修饰的同类型的变量,对其初始化。此时的引用相关的是原变量。
表达式初始化
c++允许其他可以转化为常量引用类型的变量为该常量引用赋值
e.g.
double pi=3.14;
const int &p=pi;
此时的第二条语句等价于
const int temp=pi;
const int &p=temp;
此时p中的值是临时变量temp的值。实际上由于常量引用不能改变引用的变量的值,所以这种使用方法在c++中是被允许的。除此之外一个表达式对常量初始化也是允许的。这种情况下这个常量引用引用的是一个临时变量的值。
const与指针
指针与引用不同,const只能限定引用的一层内容,而const能限定指针的两层内容
指向常量的指针
如果我们将const放到指针声明的最前面,则这个const表明的含义为这个指针是一个指向常量的指针,也就是说我们不能通过这个指针来改变指针所指向的值。而指针本身是可以改变的。此时的const称为底层const。
const指针
如果我们将const放到指针声明的变量前,则这个指针的含义为这个指针是个常量指针,也就是说,这个指针在声明时就已经固定不能被改变,所以它的声明必须初始化。此时的const我们称为顶层const。
更多相关内容查看我的个人博客:www.yhuiest.top