| asm | 插入一個匯編指令. |
| auto | 聲明一個本地變量. |
| bool | 聲明一個布爾型變量. |
| break | 結束一個循環. |
| case | 一個switch語句的一部分. |
| catch | 處理 thrown 產生的異常. |
| char | 聲明一個字符型變量. |
| class | 聲明一個類. |
| const | 聲明一個常量. |
| const_cast | 從一個const變量中拋出. |
| continue | 在循環中間斷循環. |
| default | 是一個case語句中的缺省項. |
| delete | 釋放內存. |
| do | 構造循環體. |
| double | 聲明一個雙精度浮點變量. |
| dynamic_cast | 動態投射. |
| else | 是一個if語句中的預備條件. |
| enum | 創建列舉類型. |
| explicit | 僅用在構造器的正確匹配. |
| extern | 告訴編譯器在別的地方變量已經被定義過了. |
| false | 屬於布爾值. |
| float | 聲明一個浮點型變量. |
| for | 構造循環. |
| friend | 允許非函數成員使用私有數據. |
| goto | 跳轉到程序的其它地方. |
| if | 從一次判斷的結果處執行代碼. |
| inline | 定義一個函數為內聯. |
| int | 聲明一個整型變量. |
| long | 聲明一個長整型變量. |
| mutable | 忽略const變量. |
| namespace | 用一個定義的范圍划分命名空間. |
| new | 允許動態存儲一個新變量. |
| operator | 創建重載函數. |
| private | 在一個類中聲明私有成員. |
| protected | 在一個類中聲明被保護成員. |
| public | 在一個類中聲明公共成員. |
| register | 定義一個寄存器變量. |
| reinterpret_cast | 改變一個變量的類型. |
| return | 從一個函數中返回. |
| short | 聲明一個短整型變量. |
| signed | 修改變量類型聲明. |
| sizeof | 返回一個變量或類型的長度. |
| static | 給一個變量創建永久的存儲空間. |
| static_cast | 執行一個非多態性cast. |
| struct | 創建一個新結構體. |
| switch | 讓一個變量在不同的判斷下執行不同的代碼. |
| template | 創建一個給特殊函數. |
| this | 指向當前對象. |
| throw | 拋出一個異常. |
| true | 布爾類型的一個值. |
| try | 執行一個被throw 拋出的異常. |
| typedef | 從現有的類型中創建一個新類型. |
| typeid | 描述一個對象. |
| typename | 聲明一個類或未定義的類型. |
| union | 一個結構體在當前位置分配給多個變量相同的內存. |
| unsigned | 聲明一個無符號整型變量. |
| using | 用來輸入一個namespace. |
| virtual | 創建一個不被已構成類有限考慮的函數. |
| void | 聲明函數或數據是無關聯數據類型. |
| volatile | 警告編譯器有關的變量可能被出乎意料的修改. |
| wchar_t | 聲明一個帶有寬度的字符型變量. |
| while | 用來構成循環. |
asm
語法:
asm( "instruction" ); |
asm允許你在你的代碼中直接插入匯編語言指令, 各種不同的編譯器為這一個指令允許不一致形式, 比如:
asm { instruction-sequence }
or
asm( instruction );
auto
關鍵字auto是用來聲明完全可選擇的局部變量的
bool
關鍵字bool是用來聲明布爾邏輯變量的;也就是說,變量要么是真,要么是假。舉個例子:
bool done = false; while( !done ) { ... }
你也可以查看 data types 這一頁.
break
關鍵字break是用來跳出一個do, for, or while 的循環. 它也可以結束一個 switch 語句的子句,讓程序忽略下面的case代碼.舉個例子:
while( x < 100 ) { if( x < 0 ) break; cout << x << endl; x++; }
break語句只能跳出本層循環,假如你要跳出一個三重嵌套的循環,你就要使用包含其它的邏輯或者用一個goto語句跳出這個嵌套循環.
case
在switch里面用來檢測匹配 .
catch
catch 語句通常通過 throw 語句捕獲一個異常.
char
關鍵字char用來聲明布爾型變量. 你也可以查看 data types 這一頁...
class
語法:
class class-name : inheritance-list {
private-members-list;
protected:
protected-members-list;
public:
public-members-list;
} object-list;
|
關鍵字class允許你創建新的數據類型. class-name 就是你要創建的類的名字,並且 inheritance-list 是一個對你創建的新類可供選擇的定義體的表單.類的默認為私有類型成員,除非這個表單標注在公有或保護類型之下. object-list 是一個或一組聲明對象.舉個例子:
class Date { int Day; int Month; int Year; public: void display(); };
const
關鍵字const用來告訴編譯器一個一旦被初始化過的變量就不能再修改.
相關主題:
const_cast
const_cast
語法:
const_cast<type> (object); |
關鍵字const用於移除"const-ness"的數據,目標數據類型必須和原類型相同,目標數據沒有被const定義過除外.
相關主題:
dynamic_cast, reinterpret_cast, static_cast
continue
continue語句用來結束這次循環在一個循環語句中,例如,下面這段代碼會顯示所有除了10之外0-20的所有數字:
for( int i = 0; i < 21; i++ ) { if( i == 10 ) { continue; } cout << i << " "; }
default
switch 語句中的缺省條件.
delete
語法:
delete p; delete[] pArray; |
delete操作用來釋放p指向的內存.這個指針先前應該被 new調用過.上面第二種形式用於刪除一個數組.
相關主題:
new
do
語法:
do {
statement-list;
} while( condition );
|
do構建一個循環語句表,直到條件為假.注意循環中的語句至少被執行一次,因為判斷條件在循環的最后.
double
關鍵字double用來聲明浮點型變量的精度. 你也可以查看 data types 這一頁.
dynamic_cast
語法:
dynamic_cast<type> (object); |
關鍵字dynamic_cast強制將一個類型轉化為另外一種類型,並且在執行運行時時檢查它保證它的合法性。如果你想在兩個互相矛盾的類型之間轉化時,cast的返回值將為NULL.
相關主題:
const_cast, reinterpret_cast, static_cast
else
關鍵字else用在 if 語句中的二中選一.
enum
語法:
enum name {name-list} var-list;
|
關鍵字enum用來創建一個包含多個名稱元素的名稱表.var-list 是可選的. 例如:
enum color {red, orange, yellow, green, blue, indigo, violet}; color c1 = indigo; if( c1 == indigo ) { cout << "c1 is indigo" << endl; }
explicit
當構造函數被指定為explicit的時候,將不會自動把構造函數作為轉換構造函數,這僅僅用在當一個初始化語句參數與這個構造函數的形參匹配的情況.
extern
關鍵字extern用來告知編譯器變量在當前范圍之外聲明過了.被extern語句描述過的變量將分派不到任何空間,因為他們在別的地方被定義過了.
Extern語句頻繁的用於在多個文件之間的跨范圍數據傳遞.
false
"false"是布爾型的值.
float
關鍵字float用來聲明浮點型變量. 你也可以查看 data types 這一頁.
for
語法:
for( initialization; test-condition; increment ) {
statement-list;
}
|
for構造一個由4部分組成的循環:
- 初始化, 可以由0個或更多的由逗號分開的初始化語句構成;
- 判斷條件,如果滿足該語句循環繼續執行;
- 增量, 可以由0個或更多的由逗號分開的增量語句構成;
- 語句體,由0個或更多的語句構成,當循環條件成立時他們被執行.
例如:
for( int i = 0; i < 10; i++ ) { cout << "i is " << i << endl; } int j, k; for( j = 0, k = 10; j < k; j++, k-- ) { cout << "j is " << j << " and k is " << k << endl; } for( ; ; ) { // loop forever! }
friend
關鍵字friend允許類或函數訪問一個類中的私有數據.
goto
語法:
goto labelA; ... labelA: |
goto語句可以完成從當前位置到指定標志位的跳轉.使用goto語句要考慮有害性,所以它不經常使用. 例如, goto可以用來跳出多重嵌套 for 循環,它比額外的邏輯性跳出更具有時效性.
相關主題:
break
if
語法:
if( conditionA ) {
statement-listA;
}
else if( conditionB ) {
statement-listB;
}
...
else {
statement-listN;
}
|
if 構造一個允許不同的代碼在不同的條件下執行的分支機制.conditions 是判斷語句,statement-list . 假如條件為假, else語句塊將被執行,所有的else是可選的.
inline
語法:
inline int functionA( int i ) {
...
}
|
inline這個關鍵字請求編譯器擴張一個給定的函數。它向這個函數發出一條插入代碼的call。函數里面有靜態變量,嵌套的,switches,或者是遞歸的時候不給予內聯。當一個函數聲明包含在一個類聲明里面時,編譯器會嘗試的自動把函數內聯。
關鍵字inline請求編譯器給一個函數擴展空間,它向這個函數發出一條插入代碼的call.函數里面有 static 數據, 循環, switches, 或者是遞歸的時候不給予內聯.當一個函數聲明包含在一個類聲明里面時,編譯器會嘗試的自動把函數內聯.
其它更簡單的解釋:
內聯函數,在編譯的時候,直接把函數體編譯到函數的調用的地方。
編譯之后這個函數就不存在了。
好處是省去了函數調用的開銷,壞處是會使編譯之后的程序變大。
基於它的優缺點,所以對於一些頻繁調用的,並且代碼少的小程序可以使用inline。
int
關鍵字int 用來聲明整型變量. 你也可以查看 data types 這一頁.
long
關鍵字keyword 用來修正數據類型,它用來聲明長整型變量. 查看 data types 這一頁.
相關主題:
short
mutable
關鍵字mutable 忽略所有const 語句.一個屬於const對象的mutable 成員可以被修改.
namespace
語法:
namespace name {
declaration-list;
}
|
關鍵字namespace允許你創建一個新的空間.名字由你選擇,忽略創建沒有命名的名字空間.一旦你創建了一個名字空間,你必須明確地說明它或者用關鍵字using. 例如:
namespace CartoonNameSpace { int HomersAge; void incrementHomersAge() { HomersAge++; } } int main() { ... CartoonNameSpace::HomersAge = 39; CartoonNameSpace::incrementHomersAge(); cout << CartoonNameSpace::HomersAge << endl; ... }
new
語法:
pointer = new type; pointer = new type( initializer ); pointer = new type[size]; |
new可以給數據類型分配一個新結點並返回一個指向新分配內存區的首地址. 也可以對它進行初始化.中括號中的 size 可以分配尺寸大小.
相關主題:
delete
operator
語法:
return-type class-name::operator#(parameter-list) {
...
}
return-type operator#(parameter-list) {
...
}
|
關鍵字operator 用於重載函數.在上面語法中用特殊符(#)描述特征的操作將被重載.假如在一個類中,類名應當被指定.對於一元的操作, parameter-list 應當為空, 對於二元的操作,在operator右邊的 parameter-list 應當包含操作數 (在operand 左邊的被當作 this通過).
對於不屬於重載函數的operator成員,在左邊的操作數被作為第一個參數,在右邊的操作數被當作第二個參數被通過.
你不能用#, ##, ., :, .*, 或者 ? 標志重載.
private
屬於私有類的數據只能被它的內部成員訪問,除了friend 使用.關鍵字private 也能用來繼承一個私有的基類,所有的公共和保護成員的基類可以變成私有的派生類.
protected
保護數據對於它們自己的類是私有的並且能被派生類繼承.關鍵字keyword 也能用於指定派生,所有的公共和保護成員的基類可以變成保護的派生類.
public
在類中的公共數據可以被任何人訪問.關鍵字public也能用來指定派生,所有的公共和保護成員的基類可以變成保護的派生類.
register
關鍵字register 請求編譯器優化它定義的變量,並且通常這種優化比人工優化的好.
相關主題:
auto
reinterpret_cast
語法:
reinterpret_cast<type> (object); |
reinterpret_cast 操作能把一種數據類型改變成另一種.它應當被用在兩種不可調和的指針類型之間.
相關主題:
const_cast, dynamic_cast, static_cast
return
語法:
return; return( value ); |
return 語句可以從當前函數跳轉到調用該函數的任何地方.返回值是任意的.一個函數可以有不止一個返回語句.
short
關鍵字short用來修正數據類型,用來聲明短整型變量.查看 data types 這一頁.
相關主題:
long
signed
關鍵字signed 用來修正數據類型,用來聲明符號字符型型變量. 查看 data types 這一頁.
相關主題:
unsigned
sizeof
sizeof 操作用來用字節計算右邊表達式並返回字節數.
static
static 數據類型用來給變量創建永久存儲空間.靜態變量在函數間調用時保持他們的值不變.當用在一個類中時,所有要用到靜態變量的時候這個類將把這個變量鏡像過去.
static_cast
語法:
static_cast<type> (object); |
關鍵字static_cast 用來在兩個不同類型之間進行強制轉換,並且沒有運行時間檢查.
相關主題:
const_cast, dynamic_cast, reinterpret_cast
struct
語法:
struct struct-name : inheritance-list {
public-members-list;
protected:
protected-members-list;
private:
private-members-list;
} object-list;
|
Structs 類似於 classes, struct中的成員更像是類中的公共成員.在C中,structs 僅能包含數據並不允許有繼承表. 例如:
struct Date { int Day; int Month; int Year; };
switch
語法:
switch( expression ) {
case A:
statement list;
break;
case B:
statement list;
break;
...
case N:
statement list;
break;
default:
statement list;
break;
}
|
switch語句允許你通過一個表達式判斷許多數值,它一般用來在多重循環中代替if()...else if()...else if()... 語句. break 語句必須在每個case 語句之后, 負責循環將執行所有的case語句.default case 是可選的.假如所有的case都不能匹配的話,他將和defult case匹配. 例如:
char keystroke = getch(); switch( keystroke ) { case 'a': case 'b': case 'c': case 'd': KeyABCDPressed(); break; case 'e': KeyEPressed(); break; default: UnknownKeyPressed(); break; }
template
語法:
template <class data-type> return-type name( parameter-list ) {
statement-list;
}
|
Templates能用來創建一個對未知數據類型的操作的函數模板.這個通過用其它數據類型代替一個占位符data-type 來實現. 例如:
template<class X> void genericSwap( X &a, X &b ) { X tmp; tmp = a; a = b; b = tmp; } int main(void) { ... int num1 = 5; int num2 = 21; cout << "Before, num1 is " << num1 << " and num2 is " << num2 << endl; genericSwap( num1, num2 ); cout << "After, num1 is " << num1 << " and num2 is " << num2 << endl; char c1 = 'a'; char c2 = 'z'; cout << "Before, c1 is " << c1 << " and c2 is " << c2 << endl; genericSwap( c1, c2 ); cout << "After, c1 is " << c1 << " and c2 is " << c2 << endl; ... return( 0 ); }
this
關鍵字 this 指向當前對象.所有屬於一個 class 的函數成員都有一個this 指向.
相關主題:
class
throw
語法:
try {
statement list;
}
catch( typeA arg ) {
statement list;
}
catch( typeB arg ) {
statement list;
}
...
catch( typeN arg ) {
statement list;
}
|
throw 在C++體系下用來處理異常.同try 和 catch 語句一起使用, C++ 處理異常的系統給程序一個比較可行的機制用於錯誤校正.當你通常在用 try 去執行一段有潛在錯誤的代碼時.在代碼的某一處,一個throw 語句會被執行, 這將會從try的這一塊跳轉到catch的那一塊中去. 例如:
try { cout << "Before throwing exception" << endl; throw 42; cout << "Shouldn't ever see this" << endl; } catch( int error ) { cout << "Error: caught exception " << error << endl; }
true
"true"是布爾型的值.
try
try 語句試圖去執行由異常產生的代碼. 查看 throw 語句獲得更多細節.
typedef
語法:
typedef existing-type new-type; |
關鍵字typedef 允許你從一個現有的類型中創建一個新類型.
typeid
語法:
typeid( object ); |
typeid 操作返回給一個type_info 定義過的對象的那個對象的類型.
typename
關鍵字typename能用來在中 template 描述一個未定義類型或者代替關鍵字class.
union
語法:
union union-name {
public-members-list;
private:
private-members-list;
} object-list;
|
Unions 類似於 classes,除了所有的成員分享同一內存外它的缺省值更像公共類型. 例如:
union Data { int i; char c; };
unsigned
關鍵字keyword 用來修正數據類型,它用來聲明無符整型變量. 查看 data types 這一頁.
相關主題:
signed
using
關鍵字keyword 用來在當前范圍輸入一個namespace.
相關主題:
namespace
virtual
語法:
virtual return-type name( parameter-list ); virtual return-type name( parameter-list ) = 0; |
關鍵字virtual 能用來創建虛函數,它通常不被派生類有限考慮.但是假如函數被作為一個純的虛函數 (被=0表示)時, 這種情況它一定被派生類有限考慮.
volatile
關鍵字volatile在描述變量時使用,阻止編譯器優化那些以valatile修飾的變量,volatile被用在一些變量能被意外方式改變的地方,例如:拋出中斷,這些變量若無volatile可能會和編譯器執行的優化 相沖突.
void
關鍵字keyword 用來表示一個函數不返回任何值,或者普通變量能指向任何類型的數據. Void 也能用來聲明一個空參數表. 你也可以查看 data types 這一頁.
wchar_t
關鍵字 wchar_t 用來聲明字符變量的寬度. 你也可以查看 data types 這一頁.
while
語法:
while( condition ) {
statement-list;
}
|
關鍵字 while 用於一個只要條件未真就執行statement-list的循環體.注意假如起始條件為false,statement-list 將不被執行. (你可以用一個do循環來保證statement-list至少被執行一次.) 例如:
bool done = false; while( !done ) { ProcessData(); if( StopLooping() ) { done = true; } }
