首先底层逻辑和顶层逻辑的区别,顶层const和底层const都等价于指针,比如const int a,这个const既不是顶层也不是底层,因为a不是指针。
其次,如何查看修改了哪些const。
原理是修改const左边的人。如果 const 左边没有任何内容,则修改右边的第一个值。下面的例子说明了。
const int const * p,第一个const左边什么都没有,所以修改右边的int,第二个const左边有一个int,所以修改也是int,和两个都修改了int底层逻辑和顶层逻辑的区别,所以这句话就错了。
const int * const p,第一个const左边什么都没有,所以修改右边的int,第二个const左边有*,所以修改为*。
int const * const p,第一个const左边是int,所以修改了int,第二个const左边是*,所以修改的是*。
最后,如何区划分顶层const和底层const?
顶层 const 被 * 修改。指针本身不能改变,但它指向的内容是可以改变的。例如,int * const p 可以改变 * p,但不能改变 p 本身。
底层 const 修改类型。指针可以改变,但变量本身不能改变。
比如 const int* p, p 可以改变,但是 p *p 指向的内容不能改变。
这里还有一个额外的知识点。如果是底层const,C++支持重载,如果是非底层const,则不支持重载。
了解更多创富资讯,可以持续关注本站:东山资源库
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END