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作為模板參數