C++——各版本新特性


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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM