C++11 中引入了哪些新的更改?
C++11 是標準 C++ 語言的一個版本。它於 2011 年 8 月 12 日獲得國際標準化組織 (ISO) 批准,之後還有 C++14 和 C++17。C++11 對核心語言做了一些補充。
以下是 C++11 中引入的一些新的更改:
nullptr - 在以前的版本中,零用作值,並且它有一個缺點,即隱式轉換為整數值。空指標文字由 std::nullptr_t 表示。在這個 nullptr 中,不存在隱式轉換。
Lambda 表示式 - Lambda 表示式允許在本地定義函式。匿名函式稱為 Lambda。我們可以在任何需要函式物件 std::function 的地方使用 Lambda 表示式。
智慧指標 - 智慧指標 auto_ptr 是唯一的智慧指標,現在已棄用。C++11 中添加了另外三個智慧指標,即 shared_ptr、unique_ptr 和 weak_ptr。
auto - 在以前的版本中,我們必須指定物件的型別,但在 C++11 中,無需指定型別,這意味著您可以直接宣告變數而無需指定它們的型別。
Override 和 Final - C++11 版本引入了兩個新的特殊識別符號,即 override 和 final。Override 指示該方法應該覆蓋基類中的虛方法。另一方面,final 指示派生類不應覆蓋虛方法。
刪除和預設函式 - 刪除的函式用於防止物件複製。要停用複製,使用“=delete;”。預設函式指示編譯器生成函式的預設實現,而“=default;”用於預設函式。
基於範圍的 for 迴圈 - C++11 引入了基於範圍的 for 迴圈來迭代集合。現在,可以像迭代 C 陣列一樣迭代。它支援迭代的“foreach”正規化。
強型別列舉 - 在傳統的列舉中,它們過去會將其列舉器匯出到周圍的作用域中。它們被指定為“enum class”關鍵字。它們不會將其列舉器匯出到周圍的作用域中。
Static_assert 和型別特徵 - 它在編譯時執行斷言檢查。如果斷言為真,則不顯示任何內容,否則顯示錯誤訊息。
新的 C++ 演算法 - C++11 標準庫引入了新的演算法,其中包含一些操作,例如 all_of()、any_of 和 none_of()。