顶层const被忽略是什么意思?

Martes C++ 变量和基本类型(2) 最后由 蓝色寒冰 于2015年06月01日回复

  • 3 回答
  • 2.5k 浏览

顶层const被忽略是意味着这个顶层const失效,所限定的常量变为变量了么?

  • 蓝色寒冰 2015年06月01日 回答 #2楼
  • int *const p 意为指针是常量,是p本身不能被修改,是p所“存储”的地址是不可更改的

    const int *p是指针指向的“对象”不能被修改

  • 0 评论
  • 蓝色寒冰 2015年06月01日 回答 #3楼
    • 顶层const指示了一个对象本身是const的,顶层const可以限定内建算术类型、类类型和指针类型。底层const用来限定复合类型指针和引用。
      int i = 0;
      const int ci = 128;
      i = ci;
    

    把ci的值制到i中,ci的顶层const被忽略了;但是 ci 还是一个常量,它没有变为变量,它的const没有失效。对于变量i来说,它不需要ci的const,它把ci的const忽略了。

    • auto忽略顶层const,保留底层const:
    const int ci = i;
    auto b = ci; //b是一个整数,ci中的顶层const被忽略了;
    

    ci仍然是一个常量,b是个变量。

  • 0 评论