在早期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作為模板引數
在早期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作為模板引數