相信不少C++程序员都有过被const折腾的经历吧。特别像指向常量的指针,指针常量,指向常量的指针常量这些概念,记住两天就忘。今天我准备来系统总结下const的用法,说得不好,也请各位大神多多指教。
C++引入常量这个概念,其实主要是出于安全性的考虑。相对于C里面的#define宏定义,const有了类型,也有利于编译器做检查,把一些错误在编译阶段就给我们指出来。
常量,说得通俗一点就是一个不能被改变的量,大家只要使用时一直记住这个定义,应该能对const有一个比较清晰的理解。
首先,我得说下前面的三个概念,指向常量的指针,指针常量,指向常量的指针常量。
指向常量的指针,这个应该比较好理解,就是一个指针,它指向一个常量,所以我们不能修改这个指针指向的内容,但是指针的指向是能够改变的。它的定义是 const int* p; 和 int const *p;
指针常量,相对于指针变量,就是我们不能改变指针指向,即指针的值(地址)被绑定了,不能修改,但是我们仍旧能够修改指针指向的内容。它的定义是int* const p;
指向常量的指针常量,就是我们不能修改指针的指向,也不能修改指针指向的内容。它的定义是 const int* const p;
tips:
这几个东西的定义比较容易混淆,我觉得有一个窍门比较好记,就是看const修饰的是谁。例如const int* p跟int const *p;const都是修饰*p,这说明我们不能修改*p,但是能修改p,即指向常量。