C++11 新特性——auto 的使用

發表於2016-12-10

C++11中引入的auto主要有兩種用途:自動型別推斷和返回值佔位。auto在C++98中的標識臨時變數的語義,由於使用極少且多餘,在C++11中已被刪除。前後兩個標準的auto,完全是兩個概念。

1. 自動型別推斷

auto自動型別推斷,用於從初始化表示式中推斷出變數的資料型別。通過auto的自動型別推斷,可以大大簡化我們的程式設計工作。下面是一些使用auto的例子。

2. 返回值佔位

3.使用注意事項
①我們可以使用valatile,pointer(*),reference(&),rvalue reference(&&) 來修飾auto

②用auto宣告的變數必須初始化

③auto不能與其他型別組合連用

④函式和模板引數不能被宣告為auto

⑤定義在堆上的變數,使用了auto的表示式必須被初始化

⑥以為auto是一個佔位符,並不是一個他自己的型別,因此不能用於型別轉換或其他一些操作,如sizeof和typeid

⑦定義在一個auto序列的變數必須始終推導成同一型別

⑧auto不能自動推導成CV-qualifiers(constant & volatile qualifiers),除非被宣告為引用型別

⑨auto會退化成指向陣列的指標,除非被宣告為引用

相關文章