zoukankan      html  css  js  c++  java
  • “顶层const”和“底层const”的思考

    “顶层const"顾名思义就是对对象本身的一种限制,而使得对象本身为常量。

    例:

    const int a = 1; //对对象本身做了限制,变为常量,是“顶层const”

    同理,”底层const"通常与指针和引用等复合类型的基本类型有关,那是对指针、引用类型所牵连的对象的限制,那是对底层的限制。

    例:

    const int a = 1;
    const int *p = &a; //对存储的a对象进行了限制,这是“底层const”

    归根结底,限制的范围不同,有复合类型既可以是“顶层const”也可以是”底层const",比如指针。

    例:

    const int a = 1;
    const int *r1 = &a;
    const int *const r2= &r1; //对r2和r1都作了限制,即是“顶层const”又是“底层const”

    注:在使用“底层const"对象进行赋值时,要赋值对象必须同时具有“底层const"

    例:

    const int a = 1;
    const int *p = &a;
    int *p1 = p; //p具有“底层const”将引发错误

    因为p1是int型指针,必然可以对p1所存储的对象作出改变,例

    *p1 = 1; 

    然而,p1所存储的对象为a,a是const常量,与之有矛盾。所以“底层const”只能赋值给“底层const"。

  • 相关阅读:
    汤姆大叔的博客
    ajax
    兼容谷歌的光标居中写法
    浅谈服务治理与微服务
    Java线程面试题合集(含答案)
    java设计模式之装饰者模式
    java集合类详解
    java线程-看这一篇就够了
    javaIO详解
    java反射详解
  • 原文地址:https://www.cnblogs.com/vczf/p/6823267.html
Copyright © 2011-2022 走看看