被const修饰声明的对象只读
1 | const int i = 100; |
必须初始化
1 | const int i = 10; |
非静态类成员函数后置const
此函数不能更改类成员变量
const常量值可以被修改
1 | const int i = 100; |
通过强制类型转换,将地址赋给变量,再修改即可更改其值
虽然地址中的值已经改变,但是如果代码中再次用到修改了值的常量i
,其值还是最开始定义的值
有关const指针
- 当 const 位于
*
左侧,表示指针所指对象为常量,不能通过解引用修改其数据,但指针本身是变量,可以指向内存单元 - 当 const 位于
*
右侧,表示指针本身为常量,不能修改其指向的内存单元,但所指向对象为变量,可以通过解引用修改其数据 - 当
*
两侧各有一个 const 时,其指针和所指向内存单元都不能修改 - 此处我总结一个口诀,const右边先是什么,什么就不能修改;即const 右边为
*
,如const int* a
或int const* a
,都无法改变* a
,而int* const a
,则a
无法改变。1
2
3
4
5
6
7
8
9const int* a = new int(10);
int const* b = new int(11);
int* const c = new int(12);
a = new int(-11);
*a = *a + 1;// error
b = new int(-12);
* b = *b + 1;// error
c = new int(-13);// error
*c = *c + 1;