首頁  >  問答  >  主體

C++ 中 auto 和顶/底层常量的问题

C++ Primer 第5版中,关于 auto 让我有点疑问:

里边说

auto 通常会忽略掉顶层的 const,底层 const 则会保留下来。因此,设置一个类型为 auto 的引用时,初始值中的顶层常量属性仍然保留。但仍然要注意,如果初始值已经绑定了引用,则此常量就不是顶层常量了。

这里的顶层常量和底层常量有哪些区别,导致了这样的说法?

大家讲道理大家讲道理2713 天前1031

全部回覆(4)我來回復

  • 阿神

    阿神2017-04-17 13:40:08

    你看看const章節的內容就知道了。頂層常數是指內容不允許被修改的常數,例如const int* p; p是一個整數指針,它所指向的整數變數的指不能被修改。 const修飾符是右結合,所以這裡的const修飾int,表示內容不能修改。
    底層常數是指值能被修改,但位址不能被修改的常數。例如int* const p; const右邊是指針,所以語句定義了一個不能指向其他記憶體區域的指針,但該記憶體區域的值是可以被修改的

    回覆
    0
  • PHPz

    PHPz2017-04-17 13:40:08

    雷雷

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:40:08

    簡單的說就是:
    指針能不能改變,是頂層const;
    指針指向的東西能不能改變,是底層const。
    一般在類型推導的過程中,頂層的const都會被忽略,而底層const被保留。
    允許將頂層const變數賦值給非頂層const變量,但底層const不同的話,就不行。底層const不同相當於類型不同。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:40:08

    雷雷

    回覆
    0
  • 取消回覆