C 一些關鍵字的解釋

2021-09-01 16:55:51 字數 1115 閱讀 2715

auto

在c++98/03中這個這個關鍵字用於宣告塊中的變數的生存期為自動生存期,

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

在c++11中,auto的含義改變為自動通過初值符推斷宣告的型別佔位符。

也可以使用auto& i等宣告,具體推導規則同模版引數型別推導。

typeid

typeid(obj)返回的是type_info的乙個引用,可以用typeid(obj).name()獲取型別名字。

這裡有可能拋異常,如果是乙個badtype,也就是說typeid有可能是rtti的。

其中rtti(run-time type identification,通過執行時型別識別)

使用rtti技術的還有dynamic_cast。

explicit

這個關鍵字修飾建構函式宣告,表示顯式建構函式(模版),顯式建構函式不參與特定的過載。

c++11從兩個角度擴充套件了用法。其一是適用於轉換函式(模版),類似建構函式,避免不需要的過載。

其二是列表初始化,除非直接使用std::initializer_list,顯式建構函式被列表初始化忽略。

(在c++98/03中,explicit僅對單一引數呼叫建構函式有意義,這裡打破了這個限制)

register

被視為過時的(可能在未來標準移除)。

volatile

指定被修飾的物件型別的讀操作是***(因此讀取不能被隨便優化合併,適合對映i/o暫存器等)。

即被修飾的物件有可能在其他地方被修改。

static_cast

c式的強制型別轉換

reinterpre_cast

從一種型別重新解釋到另一種型別,按二進位製流擷取

dynamic_cast(try it)

子類指標或引用到基類的轉換,利用虛函式表使用rtti技術達到目的,

所以如果沒有虛函式表支援或者直接是兩個不相關的類進行dynamic_cast會報編譯錯誤。

關鍵字 一些關鍵字用法總結

register 用register宣告的變數稱暫存器變數,在可能的情況下會直接存放在機器的暫存器中 但對32位編譯器不起作用,當global optimizations 全域性優化 開的時候,它會做出選擇是否放在自己的暫存器中 不過其它與register關鍵字有關的其它符號都對32位編譯器有效。c...

c語言的一些關鍵字

1.switch case case後面只能是整型或者字元型的常量或者常量表示式,並且不要忘記了加default switch b case 3 cout a 2.return 關鍵字 return用於終止乙個函式並返回其後面跟著的值,若果是表示式一般加上括號,規範性。但是return 不可以返回指...

c語言的一些關鍵字

保留關鍵字 char short int unsigned long float double struct union void enum signed const volatile typedef auto case continue default do else for goto if re...