相当于顶层const底层constconst原则底层顶层修饰的底层(图)

首先底层逻辑和顶层逻辑的区别,顶层const和底层const都等价于指针,比如const int a,这个const既不是顶层也不是底层,因为a不是指针。

其次,如何查看修改了哪些const。

原理是修改const左边的人。如果 const 左边没有任何内容,则修改右边的第一个值。下面的例子说明了。

const int const * p,第一个const左边什么都没有,所以修改右边的int,第二个const左边有一个int,所以修改也是int,和两个都修改了int底层逻辑和顶层逻辑的区别,所以这句话就错了。

图片[1]-相当于顶层const底层constconst原则底层顶层修饰的底层(图)-东山资源库

const int * const p,第一个const左边什么都没有,所以修改右边的int,第二个const左边有*,所以修改为*。

图片[2]-相当于顶层const底层constconst原则底层顶层修饰的底层(图)-东山资源库

int const * const p,第一个const左边是int,所以修改了int,第二个const左边是*,所以修改的是*。

图片[3]-相当于顶层const底层constconst原则底层顶层修饰的底层(图)-东山资源库

最后,如何区划分顶层const和底层const?

图片[4]-相当于顶层const底层constconst原则底层顶层修饰的底层(图)-东山资源库

顶层 const 被 * 修改。指针本身不能改变,但它指向的内容是可以改变的。例如,int * const p 可以改变 * p,但不能改变 p 本身。

底层 const 修改类型。指针可以改变,但变量本身不能改变。

比如 const int* p, p 可以改变,但是 p *p 指向的内容不能改变。

这里还有一个额外的知识点。如果是底层const,C++支持重载,如果是非底层const,则不支持重载。

了解更多创富资讯,可以持续关注本站:东山资源库

© 版权声明
THE END
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片