2.1 常量
?nullptr?關(guān)鍵字,專門用來區(qū)分空指針、0。而?nullptr?的類型為?nullptr_t,能夠隱式的轉(zhuǎn)換為任何指針或成員指針的類型,也能和他們進(jìn)行相等或者不等的比較。
?constexpr?讓用戶顯式的聲明函數(shù)或?qū)ο髽?gòu)造函數(shù)在編譯器會(huì)成為常量表達(dá)式。
從 C++14 開始,constexptr 函數(shù)可以在內(nèi)部使用局部變量、循環(huán)和分支等簡單語句
2.2 變量及其初始化
if/switch 變量聲明強(qiáng)化? 可以在?if?和?switch?語句中聲明一個(gè)臨時(shí)的變量
std::initializer_list? 初始化列表? ,允許構(gòu)造函數(shù)或其他函數(shù)像參數(shù)一樣使用初始化列表,這就為類對象的初始化與普通數(shù)組和 POD 的初始化方法提供了統(tǒng)一的橋梁。 初始化列表除了用在對象構(gòu)造上,還能將其作為普通函數(shù)的形參
2.3 類型推導(dǎo)
auto?進(jìn)行類型推導(dǎo)?不能用于函數(shù)傳參?不能用于推導(dǎo)數(shù)組類型
decltype? decltype(表達(dá)式) 解決了 auto 關(guān)鍵字只能對變量進(jìn)行類型推導(dǎo)的缺陷?std::is_same?用于判斷?T?和?U?這兩個(gè)類型是否相等
尾返回類型推導(dǎo)?利用 auto 關(guān)鍵字將返回類型后置
decltype(auto)?主要用于對轉(zhuǎn)發(fā)函數(shù)或封裝的返回類型進(jìn)行推導(dǎo),它使我們無需顯式的指定?decltype?的參數(shù)表達(dá)式
2.4 控制流
if constexpr?允許在代碼中聲明常量表達(dá)式的判斷條件
區(qū)間 for 迭代 for (auto element : vec)? for (auto &element : vec)
2.5 模板
2.6 面向?qū)ο?br>
委托構(gòu)造?使得構(gòu)造函數(shù)可以在同一個(gè)類中一個(gè)構(gòu)造函數(shù)調(diào)用另一個(gè)構(gòu)造函數(shù),從而達(dá)到簡化代碼的目的
using?繼承構(gòu)造函數(shù)
當(dāng)重載虛函數(shù)時(shí),引入?override?關(guān)鍵字將顯式的告知編譯器進(jìn)行重載,編譯器將檢查基函數(shù)是否存在這樣的虛函數(shù),否則將無法通過編譯
顯式禁用默認(rèn)函數(shù)?允許顯式的聲明采用或拒絕編譯器自帶的函數(shù)
Magic() =default;//顯式聲明使用編譯器生成的構(gòu)造
Magic&operator=(constMagic&) =delete;//顯式聲明拒絕編譯器生成構(gòu)造
強(qiáng)類型枚舉 枚舉類(enumaration class),并使用?enum class?的語法進(jìn)行聲明。這樣定義的枚舉實(shí)現(xiàn)了類型安全,首先他不能夠被隱式的轉(zhuǎn)換為整數(shù),同時(shí)也不能夠?qū)⑵渑c整數(shù)數(shù)字進(jìn)行比較,更不可能對不同的枚舉類型的枚舉值進(jìn)行比較。但相同枚舉值之間如果指定的值相同,那么可以進(jìn)行比較