1. 首页
    2. C++

    顶层const与底层const

    • const的作用是使对象至少在运行期间是常量
    • 首先const并非只有两层,如:const int *const*const*const p=nullptr;其实也无需多的抠概念只要知道哪个const修饰的是哪个对象,它的作用是什么,自然就知道很清楚了
    • 1. 永远从右往左读一个变量声明。
      2. const永远修饰const出现地点左边的声明类型。
      3. 如果左边没有声明类型,就修饰右边。
    • 举例:const int * const p=nullptr; 红const修饰int * 即p是常量,蓝const 修饰int 即*p是常量
    • 或者可以这么理解:const int *** const cptr=nullptr;
      可以解释为:const<Ptr<Ptr<Ptr<const<int>>>>> cptr=nullptr;
    • 这样也就容易理解typedef 定义的指针常量
      如:typedef const char * ccptr;
      那么const ccptr cptr=nullptr; 可以理解为 const<ccptr> cptr=nullptr;
      然后const<Ptr<const<char>>> cptr=nullptr;因为ccptr 是一个类型,先按普通类型计算,再替换。
      那么const ccptr * cptr = nullptr;可以解释为:Ptr<const<ccptr>> cptr=nullptr;->
      Ptr<const<Ptr<const<char>>>> cptr=nulllptr; 即cptr是const char * const *类型
      即cptr是一个指向 指针常量 的 指针常量 ,*cptr 不可修改,**cptr也不可修改,cptr可修改。
    • 引用不是对象,没有顶层const

    参考:https://www.zhihu.com/question/24785843

    评分 0, 满分 5 星
    0
    0
    看完收藏一下,下次也能找得到
    • 版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
    • 文章链接:https://icebmji.com/blog/?p=136 [复制] (转载时请注明本文出处及文章链接)
    上一篇:
    :下一篇

    发表评论

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

    沙发空缺中,还不快抢~