首页  >  问答  >  正文

c++ - 顶层const跟底层const有啥区别

怎么感觉顶层const跟底层const的意思都是定义了就不能改了。 比如 const in i =1; 跟 int const i =1;有啥区别

怪我咯怪我咯2713 天前527

全部回复(2)我来回复

  • 迷茫

    迷茫2017-04-17 14:55:39

    int const i和const int i没区别,都表示i是常量。const int p和int const p也一样,表示p是常量,但p是变量;int const p和他们不一样,表示p是常量,*p是变量。

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-17 14:55:39

    顶层const和底层的const主要是针对指针来说的。
    所谓顶层const是指指针的不变性,即指针指向的位置不变!int *const p = &i; 则p这个值不会再变,在这里你可以通过其他方式改变i这个值,比如说你可以直接赋值i = 9;。这样const也拿你没办法。
    而底层const则是指指针指向的对象或者内置类型不变,const int *p = &i;则这里的i的值就不许再变了,但是你仍然可以改变p,比如说你可以这样const int *p = &j;
    我理解的const是一种约定,是说我用了const就不会改变变量的值了,而其他人乱动我也没办法。
    一些浅见,请多指教。

    回复
    0
  • 取消回复