C 常用關鍵字(C 11更新)

2021-06-25 13:42:41 字數 2333 閱讀 9809

c++常用關鍵字(c++11更新)

typeid:

獲取表示式的型別,以std::type_info(類)表示結果,可能丟擲std::bad_typeid。當運算元非多型類(引用)型別在編譯時即可確定結果,否則需要在執行時取得結果,即rtti。

const std::type_info&ff=typeid(ee);//typeid:theresult of a typeid expression is a const type_info&.

typedef:

用以給資料型別取別名。字面名義上是定義,實際只是宣告——這點和c語言的說法不同。c++11中可被using新增的用法代替。

sizeof:

返回型別名或表示式具有的型別對應的大小。不能對函式使用(雖然可能有非標準擴充套件)。

c++11

新增支援直接對類的資料成員作為運算元(之前無法使用)。

sizeof

的運算元是不被求值的,利用這一點可以配合模版元程式設計測試型別正確性。

catch,throw,try: 用於

異常處理

。try

指定try

塊的起始,

try塊後的

catch

可以捕獲異常。異常由

throw

丟擲。throw

在函式中還表示動態異常規範,但在

c++11

中被標記為過時(由

noexcept

部分取代)。

mutable:

用於類的非靜態非

const

資料成員,表示不受到成員函式的

const

的限制,可以在

const

成員函式中使用,或改變其值。

auto: 在

c++98/03

中這個這個關鍵字用於宣告塊中的

變數的生存期為自動生存期,若是物件同時具有自動儲存類,即生存期在塊結束時結束。這樣的變數被稱為

區域性變數

。這個關鍵字不常用,因為即便省略,宣告的預設就是

auto

的。[6]

在c++11

中,auto

的含義改變為自動通過初值符推斷宣告的型別佔位符。如宣告

auto i = 1;

,auto

就相當於

int,因為1是

int型別,可以推斷出

i的型別。也可以使用

auto& i

等宣告,具體推導規則同模版引數型別推導。

[4]

decltype:

用於編譯時推斷型別。此外參與函式宣告的另一種語法:指定返回

auto

,同時decltype

引導trailing-return-type

指定實際應該返回型別。

decltype

的運算元也不被求值。

static_assert:

用於編譯時的靜態斷言:若指定的表示式為

false

則編譯失敗。

noexcept:

實踐表明動態異常規範會影響執行時效能。新增的

noexcept

表示靜態異常規範,只指定函式(模版)是否有異常丟擲,這裡

noexcept

即noexcept(true)

,表示沒有異常丟擲。除了異常規範,

noexcept

可以作用於乙個表示式來判斷是否有異常,這對於模版**非常有用。

constexpr: 類似

const

但更強大,修飾函式或物件,表示函式結果或物件是編譯時決定的常量,以便優化。(

const

不能修飾一般的函式,也不一定指定宣告的物件能編譯期的常量表示式,更可能只是唯讀物件。而在

c語言中,

const

完全只能指定唯讀物件。)

static: 和

c語言類似,宣告靜態儲存期物件,或指定乙個函式的名稱具有內部鏈結。在

c++還有另乙個用途

——用於類作用域宣告,表示宣告的成員是類共有的,不需要通過類的物件訪問。類的靜態資料成員也具有靜態儲存期,除非被

thread_local

修飾。

兩者並無效率的差異。區別在於編譯器的錯誤檢查:

經常會寫成

if (n=10) ;

如果某語言是弱語言(如

c++)或者編譯器檢查不嚴格

..則該語句就一定為

true;但

10=n

就100%

是個false..

因為值不能被變數賦值

c 11關鍵字剖析

1 auto 該關鍵字用於兩種情況 1.宣告變數時 根據初始化表示式自動推斷變數型別。2.宣告函式作為函式返回值的佔位符。2static static變數只初始化一次,除此之外它還有可見性的屬性 1.static修飾函式內的 區域性 變數時,表明它不需要在進入或離開函式時建立或銷毀。且僅在函式內可見...

C 11特性 decltype關鍵字

我們之前使用的typeid運算子來查詢乙個變數的型別,這種型別查詢在執行時進行。rtti機制為每乙個型別產生乙個type info型別的資料,而typeid查詢返回的變數相應type info資料,通過name成員函式返回型別的名稱。同時在c 11中typeid還提供了hash code這個成員函式...

C 11基礎 decltype關鍵字

1.decltype關鍵字獲取表示式的型別 int x 0 decltype x y 1 y int2.推導規則decltype exp int n 0 volatile const int x n decltype n a n a int decltype x b n b const volati...