c++ 新關鍵字詳解

alignas

alignof用於獲取取指定表達式指定的(類似sizeof,可以直接是類型名)的對齊(alignment)。alignas用於聲明時指定對齊類似於現有的類型。和sizeof類似,兩者的操作數都不被求值。

constexpr

類似const但更強大,修飾函數或對象,表示函數結果或對象是編譯時決定的常量,以便優化。(const不能修飾一般的函數,也不一定指定聲明的對象能編譯期的常量表達式,更可能只是只讀對象。而在C語言中,const完全只能指定只讀對象。)

char16_t 和 char32_t

二者分別表示16位字符型和32位字符型,類似char和wchar_t,也是一般只專用於表示字符的整數類型,且設計上用於表示Unicode字符。char16_t和char32_t是C++11新增的,以克服wchar_t在不同平臺上無法保證確定寬度的缺點。

decltype

用於編譯時推斷類型。此外參與函數聲明的另一種語法:指定返回auto,同時decltype引導trailing-return-type指定實際應該返回類型。decltype的操作數也不被求值。

nullptr

字面量nullptr是具有std::nullptr_t類型的右值,是空指針常量。C++98/03中表示空指針常量的NULL或0都會在重載中引起混淆,而純庫的解決方案在這裏也遇到困難,所以有必要加入新的關鍵字來專門表示空指針。

noexcept

實踐表明動態異常規範會影響運行時性能。新增的noexcept表示靜態異常規範,只指定函數(模版)是否有異常拋出,這裏noexcept即noexcept(true),表示沒有異常拋出。除了異常規範,noexcept可以作用於一個表達式來判斷是否有異常,這對於模版代碼非常有用。

static_assert

用於編譯時的靜態斷言:若指定的表達式爲false則編譯失敗。

auto

C++11標準和C++98/03標準的auto是不同的。C++98/03標準中,auto表示自動儲存類型[6];C++11標準中,auto表示由編譯器靜態判斷其應有的類型[4]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章