C++ 的關鍵字(保留字)完整介紹

huangwuming002發表於2020-10-16

1. asm

asm (指令字串):允許在 C++ 程式中嵌入彙編程式碼。

2. auto

auto(自動,automatic)是儲存型別識別符號,表明變數"自動"具有本地範圍,塊範圍的變數宣告(如for迴圈體內的變數宣告)預設為auto儲存型別。

3. bool

bool(布林)型別,C++ 中的基本資料結構,其值可選為 true(真)或者 false(假)。C++ 中的 bool 型別可以和 int 混用,具體來說就是 0 代表 false,非 0 代表 true。bool 型別常用於條件判斷和函式返回值。

4. break

break(中斷、跳出),用在switch語句或者迴圈語句中。程式遇到 break 後,即跳過該程式段,繼續後面的語句執行。

5. case

用於 switch 語句中,用於判斷不同的條件型別。

6. catch

catch 和 try 語句一起用於異常處理。

7. char

char(字元,character)型別,C++ 中的基本資料結構,其值一般為 0~255 的 int。這 256 個字元對應著 256 個 ASCII 碼。char 型別的資料需要用單引號 ' 括起來。

8.class

class(類)是 C++ 物件導向設計的基礎。使用 class 關鍵字宣告一個類。

9. const

const(常量的,constant)所修飾的物件或變數不能被改變,修飾函式時,該函式不能改變在該函式外面宣告的變數也不能呼叫任何非const函式。在函式的宣告與定義時都要加上const,放在函式引數列表的最後一個括號後。在 C++ 中,用 const 宣告一個變數,意味著該變數就是一個帶型別的常量,可以代替 #define,且比 #define 多一個型別資訊,且它執行內連結,可放在標頭檔案中宣告;但在 C 中,其宣告則必須放在原始檔(即 .C 檔案)中,在 C 中 const 宣告一個變數,除了不能改變其值外,它仍是一具變數。如:

const double pi(3.14159);
或 
const double pi = 3.14159;

 

10. const_cast用法:

const_cast<type_id> (expression)

該運算子用來修改型別的 const 或 volatile 屬性。除了 const 或 volatile 修飾之外, type_id 和 expression 的型別是一樣的。常量指標被轉化成非常量指標,並且仍然指向原來的物件;常量引用被轉換成非常量引用,並且仍然指向原來的物件;常量物件被轉換成非常量物件。

11. continue

continue(繼續)關鍵字用於迴圈結構。它使程式跳過程式碼段後部的部分,與 break 不同的是,continue 不是進入程式碼段後的部分執行,而是重新開始新的迴圈。因而它是"繼續迴圈"之意,不是 break(跳出)。

12. default

default(預設、預設)用於 switch 語句。當 switch 所有的 case 都不滿足時,將進入 default 執行。default 只能放在 switch 語句所有的 case 之後,並且是可選的。

13. delete

delete(刪除)釋放程式動態申請的記憶體空間。delete 後面通常是一個指標或者陣列 [],並且只能 delete 通過 new 關鍵字申請的指標,否則會發生段錯誤。

14. do

do-while是一類迴圈結構。與while迴圈不同,do-while迴圈保證至少要進入迴圈體一次。

15. double

double(雙精度)型別,C++ 中的基本資料結構,以雙精度形式儲存一個浮點數。

16. dynamic_cast

dynamic_cast(動態轉換),允許在執行時刻進行型別轉換,從而使程式能夠在一個類層次結構安全地轉換型別。dynamic_cast 提供了兩種轉換方式,把基類指標轉換成派生類指標,或者把指向基類的左值轉換成派生類的引用。

17. else

else 緊跟在 if 後面,用於對 if 不成立的情況的選擇。

18. enum

enum(列舉)型別,給出一系列固定的值,只能在這裡面進行選擇一個。

19. explicit

explicit(顯式的)的作用是"禁止單引數建構函式"被用於自動型別轉換,其中比較典型的例子就是容器型別。在這種型別的建構函式中你可以將初始長度作為引數傳遞給建構函式。

20. export

為了訪問其他編譯單元(如另一程式碼檔案)中的變數或物件,對普通型別(包括基本資料類、結構和類),可以利用關鍵字 extern,來使用這些變數或物件時;但是對模板型別,則必須在定義這些模板類物件和模板函式時,使用標準 C++ 新增加的關鍵字 export(匯出)。

21. extern

extern(外部的)宣告變數或函式為外部連結,即該變數或函式名在其它檔案中可見。被其修飾的變數(外部變數)是靜態分配空間的,即程式開始時分配,結束時釋放。用其宣告的變數或函式應該在別的檔案或同一檔案的其它地方定義(實現)。在檔案內宣告一個變數或函式預設為可被外部使用。在 C++ 中,還可用來指定使用另一語言進行連結,這時需要與特定的轉換符一起使用。目前僅支援 C 轉換標記,來支援 C 編譯器連結。使用這種情況有兩種形式:

extern "C" 宣告語句

extern "C" { 宣告語句塊 }

 

22. false

false(假的),C++ 的基本資料結構 bool 型別的值之一。等同於 int 的 0 值。

23. float

float(浮點數),C++ 中的基本資料結構,精度小於 double。

24. for

for 是 C++ 中的迴圈結構之一。

25. friend

friend(友元)宣告友元關係。友元可以訪問與其有 friend 關係的類中的 private/protected 成員,通過友元直接訪問類中的 private/protected 成員的主要目的是提高效率。友元包括友元函式和友元類。

26. goto

goto(轉到),用於無條件跳轉到某一標號處開始執行。

27. if

if(如果),C++ 中的條件語句之一,可以根據後面的 bool 型別的值選擇進入一個分支執行。

28. inline

inline(內聯)函式的定義將在編譯時在呼叫處展開。inline 函式一般由短小的語句組成,可以提高程式效率。

29. int

int(整型,integer),C++ 中的基本資料結構,用於表示整數,精度小於 long。

30. long

long(長整型,long integer),C++ 中的基本資料結構,用於表示長整數。

31. mutable

mutable(易變的)是 C++ 中一個不常用的關鍵字。只能用於類的非靜態和非常量資料成員。由於一個物件的狀態由該物件的非靜態資料成員決定,所以隨著資料成員的改變,對像的狀態也會隨之發生變化。如果一個類的成員函式被宣告為 const 型別,表示該函式不會改變物件的狀態,也就是該函式不會修改類的非靜態資料成員。但是有些時候需要在該類函式中對類的資料成員進行賦值,這個時候就需要用到 mutable 關鍵字。

32. namespace

namespace(名稱空間)用於在邏輯上組織類,是一種比類大的結構。

33. new

new(新建)用於新建一個物件。new 運算子總是返回一個指標。由 new 建立

34. operator

operator(操作符)用於操作符過載。這是 C++ 中的一種特殊的函式。

35. private

private(私有的),C++ 中的訪問控制符。被標明為 private 的欄位只能在本類以及友元中訪問。

36. protected

protected(受保護的),C++ 中的訪問控制符。被標明為 protected 的欄位只能在本類以及其繼承類和友元中訪問。

37. public

public(公有的),C++ 中的訪問控制符。被標明為 public 的欄位可以在任何類

38.register

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

39. reinterpret_cast

用法:

reinpreter_cast<type-id> (expression)

type-id 必須是一個指標、引用、算術型別、函式指標或者成員指標。它可以把一個指標轉換成一個整數,也可以把一個整數轉換成一個指標(先把一個指標轉換成一個整數,在把該整數轉換成原型別的指標,還可以得到原先的指標值)。

40. return

return(返回)用於在函式中返回值。程式在執行到 return 語句後立即返回,return 後面的語句無法執行到。

41. short

short(短整型,short integer),C++ 中的基本資料結構,用於表示整數,精度小於 int。

42. signed

signed(有符號),表明該型別是有符號數,和 unsigned 相反。數字型別(整型和浮點型)都可以用 signed 修飾。但預設就是 signed,所以一般不會顯式使用。

43. sizeof

由於 C++ 每種型別的大小都是由編譯器自行決定的,為了增加可移植性,可以用 sizeof 運算子獲得該資料型別佔用的位元組數。

44. static

static(靜態的)靜態變數作用範圍在一個檔案內,程式開始時分配空間,結束時釋放空間,預設初始化為 0,使用時可改變其值。靜態變數或靜態函式,只有本檔案內的程式碼才可訪問它,它的名字(變數名或函式名)在其它檔案中不可見。因此也稱為"檔案作用域"。在 C++ 類的成員變數被宣告為 static(稱為靜態成員變數),意味著它被該類的所有例項所共享,也就是說當某個類的例項修改了該靜態成員變數,其修改值為該類的其它所有例項所見;而類的靜態成員函式也只能訪問靜態成員(變數或函式)。類的靜態成員變數必須在宣告它的檔案範圍內進行初始化才能使用,private 型別的也不例外。

45. static_cast

用法:

static_cast < type-id > ( expression ) 

該運算子把 expression 轉換為 type-id 型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法:

  • ① 用於類層次結構中基類和子類之間指標或引用的轉換。進行上行轉換(把子類的指標或引用轉換成基類表示)是安全的;進行下行轉換(把基類指標或引用轉換成子類表示)時,由於沒有動態型別檢查,所以是不安全的。
  • ② 用於基本資料型別之間的轉換,如把 int 轉換成 char,把 int 轉換成 enum。這種轉換的安全性也要開發人員來保證。
  • ③ 把空指標轉換成目標型別的空指標。
  • ④ 把任何型別的表示式轉換成void類?

注意 static_cast 不能轉換掉 expression 的 const、volitale、或者 __unaligned 屬性。

46. struct

struct(結構)型別,類似於 class 關鍵字,與 C 語言相容(class 關鍵字是不與 C 語言相容的),可以實現物件導向程式設計。

47. switch

switch(轉換)類似於 if-else-if 語句,是一種多分枝語句。它提供了一種簡潔的書寫,並且能夠生成效率更好的程式碼。但是,switch 後面的判斷只能是int(char也可以,但char本質上也是一種int型別)。switch 語句最後的 default 分支是可選的。

48. template

template(模板),C++ 中泛型機制的實現。

49. this

this 返回撥用者本身的指標。

50. throw

throw(丟擲)用於實現 C++ 的異常處理機制,可以通過 throw 關鍵字"丟擲"一個異常。

51. true

true(真的),C++ 的基本資料結構 bool 型別的值之一。等同於 int 的非 0 值。

52. try

try(嘗試)用於實現 C++ 的異常處理機制。可以在 try 中呼叫可能丟擲異常的函式,然後在 try 後面的 catch 中捕獲並進行處理。

53. typedef

typedef(型別定義,type define),其格式為:

typedef  型別 定義名;

型別說明定義了一個資料型別的新名字而不是定義一種新的資料型別。定義名錶示這個型別的新名字。

54. typeid

指出指標或引用指向的物件的實際派生型別。

55. typename

typename(型別名字)關鍵字告訴編譯器把一個特殊的名字解釋成一個型別。在下列情況下必須對一個 name 使用 typename 關鍵字:

  • 1. 一個唯一的name(可以作為型別理解),它巢狀在另一個型別中的。
  • 2. 依賴於一個模板引數,就是說:模板引數在某種程度上包含這個name。當模板引數使編譯器在指認一個型別時產生了誤解。

56. union

union(聯合),類似於 enum。不同的是 enum 實質上是 int 型別的,而 union 可以用於所有型別,並且其佔用空間是隨著實際型別大小變化的。

57. unsigned

unsigned(無符號),表明該型別是無符號數,和 signed 相反。

58. using

表明使用 namespace。

59. virtual

virtual(虛的),C++ 中用來實現多型機制。

60. void

void(空的),可以作為函式返回值,表明不返回任何資料;可以作為引數,表明沒有引數傳入(C++中不是必須的);可以作為指標使用。

61. volatile

volatile(不穩定的)限定一個物件可被外部程式(作業系統、硬體或併發執行緒等)改變,宣告時的語法如下:

int volatile nVint;

這樣的宣告是不能達到最高效的,因為它們的值隨時會改變,系統在需要時會經常讀寫這個物件的值。因此常用於像中斷處理程式之類的非同步程式進行記憶體單元訪問。

62. wchar_t

wchar_t 是寬字元型別,每個 wchar_t 型別佔 2 個位元組,16 位寬。漢字的表示就要用到 wchar_t。

相關文章