const 标识符 在 c++ 中作为常量修饰符 用来修饰 函数 变量 指针
const 修饰的变量不可以改变值
const 在修饰指针的时候
const 标识符出现在 * 的左边表示 指向的变量为常量不能通过指针去改变该对象的值 叫做常量指针
即
- const int a = 0;
- const int* iptr = &a;
指针 iptr 可以改变但是不能对 a 的值进行改变
即
- const int b =2;
- iptr =&b;
可以运行通过但是
*iptr = 3;
该操作不允许执行;
注意: const* point 可以指向非 const 修饰的变量, 但是任然不可以修改变量的值 而且 不可以赋值给 非常量指针
const 标识符 出现在指针的右边表示该指针为常量不可修改和重新赋值以及进行其他相关操作指针常量
即
- int a = 0;
- int * const ptr = &a .
指针常量 prt 不可以修改其值但可以修改其指向内容的值.
在 const 修饰类成员变量的声明之后要在类的初始化列表里初始化 , 但是在 const 声明的变量是编译器内置类型时, 可以在声明时初始化
而且在编译时期是不会分配内存空间去存储内置变量的. 而是直接进行替换但是只针对内置类型 其他用户自定义类型不支持.
const 在修饰函数的时候分为两种情况
一个是在返回值上为 const 即
const int func () {}
类型这种是指不能修改返回值使用较少一般用于进行操作符.
另外一种是在函数声明后添加但函数只能是类的成员函数才行全局函数不允许 即
int func()const { }
指的是在函数而里面不能对类的成员变量进行修改和重新赋值, 但操作函数可以修改和赋值非类成员变量.
在 const 修饰对象时 修饰的对象只能调用类的常函数不能调用非常函数.
注意在类的常函数中 this 指针即为指针常量也为常量指针 即
const T *const this
不能修改 this 指针指向的变量成员和修改 this 指针的指向
在 mutable 标识符声明的变量可以在常函数中改变值进行赋值操作
const_cast 可以解除 const 限制
在 const 修饰的全局变量分配内存在静态存储区
来源: http://www.bubuko.com/infodetail-2622968.html