首先明确一点,<const从不修饰数据类型,其最常修饰的是变量,指针,引用>
下面给出示例
int num = 100;
const int *ptr = # // 此时const修饰的是*,是一个指针常量,其解引用不能作为左值,
// *ptr = 10; // error: assignment of read-only location ‘* ptr’
// ---------------------------------------------------------------------------------------
int* const ptr = # // 此时const修饰的是变量ptr,是一个常量指针,其指针指向不能改变,只能指向num的地址
*ptr = 200; // Ok
int anothreNumber = 20;
// ptr = &anothreNumber; // error: assignment of read-only variable ‘ptr’
const int &alias = num; // 引用常量,无法使用别名alias修改num的值
// alias = 500; // error: assignment of read-only reference ‘tmp’
// 暂时没有常量引用这个说法,因为引用必须在声明时就初始化,如
int number = 100;
int &tmp = number; // 此时tmp永远为number的别名,直到内存释放