C++——各版本新特性
阿新 • • 發佈:2021-01-07
C++ 11
- auto關鍵字
- decltype關鍵字
- nullptr字面值
- constexpr關鍵字
- for(declaration : expression)
- Lambda表示式
- initializer_list
- 標準庫bind函式
- 智慧指標shared_ptr,unique_ptr
- 右值引用&&
- STL容器std::array,std::forward_list,std::unordered_map,std::unordered_set
C++ 14
- 拓展了lambda表示式,更加泛型:支援auto
- 拓展了型別推導至任意函式:C11只支援lambda返回型別的auto
- 棄用關鍵字 [[deprecated]]
C++ 17
- 拓展了constexpr至switch if等:C++11的constexpr函式只能包含一個表示式
- typename 巢狀
- inline 內聯變數
- 模板引數推導
- 元組類 std::tuple:std::pair實現兩個元素的組合,它實現多個
- 類模板
std::variant
表示一個型別安全的聯合體。 - 引用包裝器 std::reference_wrapper
- 變長引數模板
- 結構化繫結(函式多值返回時用{}合成struct)
- 非型別模板引數可傳入類的靜態成員
- 在if和switch中可進行初始化
- 初始化(如struct)物件時,可用花括號進行對其成員進行賦值
- 簡化多層名稱空間的寫法
- lambda表示式可捕獲*this的值,但this及其成員為只讀
- 十六進位制的單精度浮點數
- 繼承與改寫建構函式
using B1::B1;//表示繼承B1的建構函式
- 當模板引數為非型別時,可用auto自動推導型別
- 判斷有沒有包含某檔案__has_include
- [[fallthrough]]用於switch語句塊內,表示會執行下一個case或default
- [[nodiscard]]表示函式的返回值沒有被接收,在編譯時會出現警告。
- [[maybe_unused]]即便沒使用也不警告
https://blog.csdn.net/qq811299838/article/details/90371604
C++ 20
- concept用於宣告具有特定約束條件的模板型別
// 宣告一個數值型別的concept template<typename T> concept number = std::is_arithmetic<T>::value;
- 範圍庫(Ranges Library)
- 協程(Coroutines)
- 模組(modules)