回覆列表
  • 1 # 通訊人的自我修養

    在早期C/C++中auto的含義是:使用auto修飾的變數,是具有自動儲存器的區域性變數

    C++11中,標準委員會賦予了auto全新的含義即:auto不再是一個儲存型別指示符,而是作為一個新的型別指示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得。

    語法糖:

    簡單的識別變數型別

    這個還不能體現出 auto 的真正意義. 但是當型別名過長時, auto 的作用就發揮出來了.

    注:使用auto定義變數時必須對其進行初始化,在編譯階段編譯器需要根據初始化表示式來推導auto的實際型別。因此auto並非是一種“型別”的宣告,而是一個型別宣告時的“佔位符”,編譯器在編譯期會將auto替換為變數實際的型別。

    auto迭代:

    對於一個有範圍的集合而言,由程式設計師來說明迴圈的範圍是多餘的,有時候還會容易犯錯誤。因此C++11中引入了基於範圍的for迴圈。for迴圈後的括號由冒號“ :”分為兩部分:第一部分是範圍內用於迭代的變數,第二

    部分則表示被迭代的範圍

    但是這樣不會對原陣列 a 造成影響

    auto& 可以對陣列 a 中的元素進行修改.

    auto特性:

    1.auto不能作為函式引數

    2.auto不能直接宣告陣列

    3. 為了避免與C++98中的auto發生混淆,C++11只保留了auto作為型別指示符的用法

    4. auto在實際中最常見的優勢用法就是跟以後會講到的C++11提供的新式for迴圈,還有lambda表示式等進行配合使用。

    5. auto不能定義類的非靜態成員變數

    6. 例項化模板時不能使用auto作為模板引數

  • 中秋節和大豐收的關聯?
  • 低速頓挫依舊明顯,那麼溼式雙離合到底能不能買?