const限定符

1.顶层const和底层const

顶层const指的是变量本身是const,即变量本身是常量;

例如 const int a = 1; 表示变量a是常量,不可更改a的值;

再例如指针情况,int *const p = &x; 表示整形指针变量p是一个常量, 即p的值是不变的,也就是p会一直指向某一个地址,不可更改p的指向;

底层const指的是变量引用(绑定)或者指向的对象是const;

这里需要注意,所谓的引用或者指定的对象是const只是被const限定的变量自认为他引用或者指向的对象是常量(p63)

例如 const int &a = b; 表示a认为他引用的对象b是常量,但是b可以不是常量,b的值也许可以被修改,但是a绝对不会去修改b的值

再例如 const int p = &a; 不允许通过指向a的指针p间接的去修改a,但是p的指向可以改变,也就是说p现在指向a,下一步可以令他指向其他对象

比较特殊的是指针既可以是底层const也可以是顶层const也可以是二者皆是

例如 const int *const p  = &a; 第一个const表示底层const, 第二个cosnt表示顶层const

posted on 2018-12-15 22:49  lazzzy  阅读(180)  评论(0编辑  收藏  举报

导航