C++11
已經(jīng)出來很久了,網(wǎng)上也早有很多優(yōu)秀的C++11
新特性的總結(jié)文章,所以本文就是對帶你了解一下C++11
的一些新特性。
C++
是一個擁有用戶群體相當(dāng)大的語言,同時也在多個領(lǐng)域使用的語言。從 C++98
的出現(xiàn)到 C++11
的正式定稿經(jīng)歷了長達(dá)十年多之久的積累。
C++11
是 C++
的第二個主要版本(前一個是 C++98 而后一個是 C++17,C++14則是C++11的一次小的改進(jìn) ),并且是從 C++98
起的最重要更新。它引入了大量更改,標(biāo)準(zhǔn)化了既有實踐,并改進(jìn)了對 C++
程序員可用的抽象。
C++14/17
則是作為對 C++11
的重要補(bǔ)充和優(yōu)化, C++20
則將這門語言領(lǐng)進(jìn)了現(xiàn)代化的大門,所有這些新標(biāo)準(zhǔn)中擴(kuò)充的特性,給 C++
這門語言注入了新的活力。
C++11
是對目前C++
語言的擴(kuò)展和修正, C++11
不僅包含核心語言的新技能,而且擴(kuò)展了C++
的標(biāo)準(zhǔn)程序庫(STL) ,并入了大部分的C++ Technical Report 1
(TR1) 程序庫(數(shù)學(xué)的特殊函數(shù)除外)。
C++11關(guān)鍵新特性:
核心語言功能特性
- auto 與 decltype
- 預(yù)置與棄置的函數(shù)
- final 與 override
- 尾隨返回類型
- 右值引用
- 移動構(gòu)造函數(shù)與移動賦值運(yùn)算符
- 有作用域枚舉
- constexpr 與字面類型
- 列表初始化
- 委托與繼承的構(gòu)造函數(shù)
- 花括號或等號初始化器
- nullptr
- long long
- char16_t 與 char32_t
- 類型別名
- 變參數(shù)模板
- 推廣的(非平凡)聯(lián)合體
- 推廣的 POD (平凡類型與標(biāo)準(zhǔn)布局類型)
- Unicode 字符串字面量
- 用戶定義字面量
- 屬性
- lambda 表達(dá)式
- noexcept 說明符與 noexcept 運(yùn)算符
- alignof 與 alignas
- 多線程內(nèi)存模型
- 線程局部存儲
- GC 接口
- 范圍 for (基于 Boost 庫)
- static_assert (基于 Boost 庫)
庫功能特性
頭文件
<typeindex> <type_traits> <chrono> <initializer_list> <tuple> <scoped_allocator> <cstdint> <cinttypes> <system_error> <cuchar> <array> <forward_list> <unordered_set> <unordered_map> <random> <ratio> <cfenv> <regex> <atomic> <thread> <mutex> <future> <condition_variable>
庫功能特性
- 原子操作庫
- emplace() 與其他遍及既存標(biāo)準(zhǔn)庫所有部分的右值引用使用
- std::unique_ptr
- std::move_iterator
- std::initializer_list
- 有狀態(tài)及有作用域分配器
- std::forward_list
- chrono 庫
- ratio 庫
- 新算法
- Unicode 轉(zhuǎn)換平臺
- thread library
- std::exception_ptr
- std::error_code 與 std::error_condition
- 迭代器改進(jìn):
- std::begin
- std::end
- std::next
- std::prev
- Unicode 轉(zhuǎn)換函數(shù)