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...