#### 2. C++ 關鍵字
下面表格描述了 C++ 中的關鍵字。這些關鍵字跟 C/Java 一樣都不能作為常量名,變量名或其它標識符名稱。
| 關鍵字 | 說明 | 關鍵字 | 說明 |
| --- | --- | --- | --- |
| **asm** | 允許在 C++ 程序中嵌入匯編代碼 | **auto** | (自動,automatic)是存儲類型標識符,表明變量"自動"具有本地范圍,塊范圍的變量聲明(如for循環體內的變量聲明)默認為auto存儲類型。 |
| **bool** | bool(布爾)類型,C++ 中的基本數據結構,其值可選為 true(真)或者 false(假)。C++ 中的 bool 類型可以和 int 混用,具體來說就是 0 代表 false,非 0 代表 true。bool 類型常用于條件判斷和函數返回值。 | **break** | break(中斷、跳出),用在switch語句或者循環語句中。程序遇到 break 后,即跳過該程序段,繼續后面的語句執行。 |
| **case** | 用于 switch 語句中,用于判斷不同的條件類型。 | **namespace** | namespace(命名空間)用于在邏輯上組織類,是一種比類大的結構。 |
| **catch** | catch 和 try 語句一起用于異常處理。 | **new** | new(新建)用于新建一個對象。new 運算符總是返回一個指針。由 new 創建 |
| **char** | char(字符,character)類型,C++ 中的基本數據結構,其值一般為 0~255 的 int。這 256 個字符對應著 256 個 ASCII 碼。char 類型的數據需要用單引號 **'** 括起來。 | **operator** | operator(操作符)用于操作符重載。這是 C++ 中的一種特殊的函數。 |
| **class** | class(類)是 C++ 面向對象設計的基礎。使用 class 關鍵字聲明一個類。 | **private** | private(私有的),C++ 中的訪問控制符。被標明為 private 的字段只能在本類以及友元中訪問。 |
| **const** | const(常量的,constant)所修飾的對象或變量不能被改變,修飾函數時,該函數不能改變在該函數外面聲明的變量也不能調用任何非const函數。在函數的聲明與定義時都要加上const,放在函數參數列表的最后一個括號后。在 C++ 中,用 const 聲明一個變量,意味著該變量就是一個帶類型的常量,可以代替 #define,且比 #define 多一個類型信息,且它執行內鏈接,可放在頭文件中聲明;但在 C 中,其聲明則必須放在源文件(即 .C 文件)中,在 C 中 const 聲明一個變量,除了不能改變其值外,它仍是一具變量。 | **protected** | protected(受保護的),C++ 中的訪問控制符。被標明為 protected 的字段只能在本類以及其繼承類和友元中訪問。 |
| **const\_cast** | 該運算符用來修改類型的 const 或 volatile 屬性。除了 const 或 volatile 修飾之外, type\_id 和 expression 的類型是一樣的。常量指針被轉化成非常量指針,并且仍然指向原來的對象;常量引用被轉換成非常量引用,并且仍然指向原來的對象;常量對象被轉換成非常量對象。 | **public** | public(公有的),C++ 中的訪問控制符。被標明為 public 的字段可以在任何類 |
| **continue** | continue(繼續)關鍵字用于循環結構。它使程序跳過代碼段后部的部分,與 break 不同的是,continue 不是進入代碼段后的部分執行,而是重新開始新的循環。因而它是"繼續循環"之意,不是 break(跳出)。 | **register** | register(寄存器)聲明的變量稱著寄存器變量,在可能的情況下會直接存放在機器的寄存器中;但對 32 位編譯器不起作用,當 global optimizations(全局優化)開的時候,它會做出選擇是否放在自己的寄存器中;不過其它與 register 關鍵字有關的其它符號都對32位編譯器有效。 |
| **default** | default(默認、缺省)用于 switch 語句。當 switch 所有的 case 都不滿足時,將進入 default 執行。default 只能放在 switch 語句所有的 case 之后,并且是可選的。 | **reinterpret\_cast** | type-id 必須是一個指針、引用、算術類型、函數指針或者成員指針。它可以把一個指針轉換成一個整數,也可以把一個整數轉換成一個指針(先把一個指針轉換成一個整數,在把該整數轉換成原類型的指針,還可以得到原先的指針值)。 |
| **delete** | delete(刪除)釋放程序動態申請的內存空間。delete 后面通常是一個指針或者數組 \[\],并且只能 delete 通過 new 關鍵字申請的指針,否則會發生段錯誤。 | **return** | return(返回)用于在函數中返回值。程序在執行到 return 語句后立即返回,return 后面的語句無法執行到。 |
| **do** | do-while是一類循環結構。與while循環不同,do-while循環保證至少要進入循環體一次。 | **short** | short(短整型,short integer),C++ 中的基本數據結構,用于表示整數,精度小于 int。 |
| **double** | double(雙精度)類型,C++ 中的基本數據結構,以雙精度形式存儲一個浮點數。 | **signed** | signed(有符號),表明該類型是有符號數,和 unsigned 相反。數字類型(整型和浮點型)都可以用 signed 修飾。但默認就是 signed,所以一般不會顯式使用。 |
| **dynamic\_cast** | dynamic\_cast(動態轉換),允許在運行時刻進行類型轉換,從而使程序能夠在一個類層次結構安全地轉換類型。dynamic\_cast 提供了兩種轉換方式,把基類指針轉換成派生類指針,或者把指向基類的左值轉換成派生類的引用。 | **sizeof** | 由于 C++ 每種類型的大小都是由編譯器自行決定的,為了增加可移植性,可以用 sizeof 運算符獲得該數據類型占用的字節數。 |
| **else** | else 緊跟在 if 后面,用于對 if 不成立的情況的選擇。 | **static** | static(靜態的)靜態變量作用范圍在一個文件內,程序開始時分配空間,結束時釋放空間,默認初始化為 0,使用時可改變其值。靜態變量或靜態函數,只有本文件內的代碼才可訪問它,它的名字(變量名或函數名)在其它文件中不可見。因此也稱為"文件作用域"。在 C++ 類的成員變量被聲明為 static(稱為靜態成員變量),意味著它被該類的所有實例所共享,也就是說當某個類的實例修改了該靜態成員變量,其修改值為該類的其它所有實例所見;而類的靜態成員函數也只能訪問靜態成員(變量或函數)。類的靜態成員變量必須在聲明它的文件范圍內進行初始化才能使用,private 類型的也不例外。 |
| **enum** | enum(枚舉)類型,給出一系列固定的值,只能在這里面進行選擇一個。 | **static\_cast** | 該運算符把 expression 轉換為 type-id 類型,但沒有運行時類型檢查來保證轉換的安全性。 |
| **explicit** | explicit(顯式的)的作用是"禁止單參數構造函數"被用于自動型別轉換,其中比較典型的例子就是容器類型。在這種類型的構造函數中你可以將初始長度作為參數傳遞給構造函數。 | **struct** | struct(結構)類型,類似于 class 關鍵字,與 C 語言兼容(class 關鍵字是不與 C 語言兼容的),可以實現面向對象程序設計。 |
| **export** | 為了訪問其他編譯單元(如另一代碼文件)中的變量或對象,對普通類型(包括基本數據類、結構和類),可以利用關鍵字 extern,來使用這些變量或對象時;但是對模板類型,則必須在定義這些模板類對象和模板函數時,使用標準 C++ 新增加的關鍵字 export(導出)。 | **switch** | switch(轉換)類似于 if-else-if 語句,是一種多分枝語句。它提供了一種簡潔的書寫,并且能夠生成效率更好的代碼。但是,switch 后面的判斷只能是int(char也可以,但char本質上也是一種int類型)。switch 語句最后的 default 分支是可選的。 |
| **extern** | extern(外部的)聲明變量或函數為外部鏈接,即該變量或函數名在其它文件中可見。被其修飾的變量(外部變量)是靜態分配空間的,即程序開始時分配,結束時釋放。用其聲明的變量或函數應該在別的文件或同一文件的其它地方定義(實現)。在文件內聲明一個變量或函數默認為可被外部使用。在 C++ 中,還可用來指定使用另一語言進行鏈接,這時需要與特定的轉換符一起使用。目前僅支持 **C** 轉換標記,來支持 C 編譯器鏈接。 | **template** | template(模板),C++ 中泛型機制的實現。 |
| **false** | false(假的),C++ 的基本數據結構 bool 類型的值之一。等同于 int 的 0 值。 | **this** | this 返回調用者本身的指針。 |
| **float** | float(浮點數),C++ 中的基本數據結構,精度小于 double。 | **throw** | throw(拋出)用于實現 C++ 的異常處理機制,可以通過 throw 關鍵字"拋出"一個異常。 |
| **for** | for 是 C++ 中的循環結構之一。 | **true** | true(真的),C++ 的基本數據結構 bool 類型的值之一。等同于 int 的非 0 值。 |
| **friend** | friend(友元)聲明友元關系。友元可以訪問與其有 friend 關系的類中的 private/protected 成員,通過友元直接訪問類中的 private/protected 成員的主要目的是提高效率。友元包括友元函數和友元類。 | **try** | try(嘗試)用于實現 C++ 的異常處理機制。可以在 try 中調用可能拋出異常的函數,然后在 try 后面的 catch 中捕獲并進行處理。 |
| **goto** | goto(轉到),用于無條件跳轉到某一標號處開始執行。 | **typedef** | 類型說明定義了一個數據類型的新名字而不是定義一種新的數據類型。定義名表示這個類型的新名字。 |
| **if** | if(如果),C++ 中的條件語句之一,可以根據后面的 bool 類型的值選擇進入一個分支執行。 | **typeid** | 指出指針或引用指向的對象的實際派生類型。 |
| **inline** | inline(內聯)函數的定義將在編譯時在調用處展開。inline 函數一般由短小的語句組成,可以提高程序效率。 | **typename** | typename(類型名字)關鍵字告訴編譯器把一個特殊的名字解釋成一個類型。 |
| **int** | int(整型,integer),C++ 中的基本數據結構,用于表示整數,精度小于 long。 | **union** | union(聯合),類似于 enum。不同的是 enum 實質上是 int 類型的,而 union 可以用于所有類型,并且其占用空間是隨著實際類型大小變化的。 |
| **long** | long(長整型,long integer),C++ 中的基本數據結構,用于表示長整數。 | **unsigned** | unsigned(無符號),表明該類型是無符號數,和 signed 相反。 |
| **mutable** | mutable(易變的)是 C++ 中一個不常用的關鍵字。只能用于類的非靜態和非常量數據成員。由于一個對象的狀態由該對象的非靜態數據成員決定,所以隨著數據成員的改變,對像的狀態也會隨之發生變化。如果一個類的成員函數被聲明為 const 類型,表示該函數不會改變對象的狀態,也就是該函數不會修改類的非靜態數據成員。但是有些時候需要在該類函數中對類的數據成員進行賦值,這個時候就需要用到 mutable 關鍵字。 | **using** | 表明使用 namespace。 |
| **virtual** | virtual(虛的),C++ 中用來實現多態機制。 | **void** | void(空的),可以作為函數返回值,表明不返回任何數據;可以作為參數,表明沒有參數傳入(C++中不是必須的);可以作為指針使用。 |
| **volatile** | volatile(不穩定的)限定一個對象可被外部進程(操作系統、硬件或并發線程等)改變 | **wchar\_t** | wchar\_t 是寬字符類型,每個 wchar\_t 類型占 2 個字節,16 位寬。漢字的表示就要用到 wchar\_t。 |
- 前言
- JNI基礎知識
- C語言知識點總結
- ①基本語法
- ②數據類型
- 枚舉類型
- 自定義類型(類型定義)
- ③格式化輸入輸出
- printf函數
- scanf函數
- 編程規范
- ④變量和常量
- 局部變量和外部變量
- ⑤類型轉換
- ⑥運算符
- ⑦結構語句
- 1、分支結構(選擇語句)
- 2、循環結構
- 退出循環
- break語句
- continue語句
- goto語句
- ⑧函數
- 函數的定義和調用
- 參數
- 函數的返回值
- 遞歸函數
- 零起點學通C語言摘要
- 內部函數和外部函數
- 變量存儲類別
- ⑨數組
- 指針
- 結構體
- 聯合體(共用體)
- 預處理器
- 預處理器的工作原理
- 預處理指令
- 宏定義
- 簡單的宏
- 帶參數的宏
- 預定義宏
- 文件包含
- 條件編譯
- 內存中的數據
- C語言讀文件和寫文件
- JNI知識點總結
- 前情回顧
- JNI規范
- jni開發
- jni開發中常見的錯誤
- JNI實戰演練
- C++(CPP)在Android開發中的應用
- 掘金網友總結的音視頻開發知識
- 音視頻學習一、C 語言入門
- 1.程序結構
- 2. 基本語法
- 3. 數據類型
- 4. 變量
- 5. 常量
- 6. 存儲類型關鍵字
- 7. 運算符
- 8. 判斷
- 9. 循環
- 10. 函數
- 11. 作用域規則
- 12. 數組
- 13. 枚舉
- 14. 指針
- 15. 函數指針與回調函數
- 16. 字符串
- 17. 結構體
- 18. 共用體
- 19. typedef
- 20. 輸入 & 輸出
- 21.文件讀寫
- 22. 預處理器
- 23.頭文件
- 24. 強制類型轉換
- 25. 錯誤處理
- 26. 遞歸
- 27. 可變參數
- 28. 內存管理
- 29. 命令行參數
- 總結
- 音視頻學習二 、C++ 語言入門
- 1. 基本語法
- 2. C++ 關鍵字
- 3. 數據類型
- 4. 變量類型
- 5. 變量作用域
- 6. 常量
- 7. 修飾符類型
- 8. 存儲類
- 9. 運算符
- 10. 循環
- 11. 判斷
- 12. 函數
- 13. 數學運算
- 14. 數組
- 15. 字符串
- 16. 指針
- 17. 引用
- 18. 日期 & 時間
- 19. 輸入輸出
- 20. 數據結構
- 21. 類 & 對象
- 22. 繼承
- 23. 重載運算符和重載函數
- 24. 多態
- 25. 數據封裝
- 26. 接口(抽象類)
- 27. 文件和流
- 28. 異常處理
- 29. 動態內存
- 30. 命名空間
- 31. 預處理器
- 32. 多線程
- 總結
- 音視頻學習 (三) JNI 從入門到掌握
- 音視頻學習 (四) 交叉編譯動態庫、靜態庫的入門學習
- 音視頻學習 (五) Shell 腳本入門
- 音視頻學習 (六) 一鍵編譯 32/64 位 FFmpeg 4.2.2
- 音視頻學習 (七) 掌握音頻基礎知識并使用 AudioTrack、OpenSL ES 渲染 PCM 數據
- 音視頻學習 (八) 掌握視頻基礎知識并使用 OpenGL ES 2.0 渲染 YUV 數據
- 音視頻學習 (九) 從 0 ~ 1 開發一款 Android 端播放器(支持多協議網絡拉流/本地文件)
- 音視頻學習 (十) 基于 Nginx 搭建(rtmp、http)直播服務器
- 音視頻學習 (十一) Android 端實現 rtmp 推流
- 音視頻學習 (十二) 基于 FFmpeg + OpenSLES 實現音頻萬能播放器
- 音視頻學習 (十三) Android 中通過 FFmpeg 命令對音視頻編輯處理(已開源)