C++ 第六課:C/C++關鍵字及其用法


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里面用來檢測匹配 .

相關主題:
default, switch


catch

 catch 語句通常通過 throw 語句捕獲一個異常.

相關主題:
throw, try


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();
    };

 

相關主題:
struct, union


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 << " ";
    }

 

相關主題:
break, do, for, while  


default

 switch 語句中的缺省條件.

相關主題:
case, switch


delete

語法:

  delete p;
  delete[] pArray;

delete操作用來釋放p指向的內存.這個指針先前應該被 new調用過.上面第二種形式用於刪除一個數組.

相關主題:
new


do

語法:

  do {
    statement-list;
  } while( condition );

do構建一個循環語句表,直到條件為假.注意循環中的語句至少被執行一次,因為判斷條件在循環的最后.

相關主題:
for, while


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"是布爾型的值.

相關主題:
bool, true


float

關鍵字float用來聲明浮點型變量. 你也可以查看 data types 這一頁.


for

語法:

  for( initialization; test-condition; increment ) {
    statement-list;
  }

for構造一個由4部分組成的循環:

  1. 初始化, 可以由0個或更多的由逗號分開的初始化語句構成;
  2. 判斷條件,如果滿足該語句循環繼續執行;
  3. 增量, 可以由0個或更多的由逗號分開的增量語句構成;
  4. 語句體,由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!
    }

 

相關主題:
do, while


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是可選的.

相關主題:
else, for, while


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, public


protected

保護數據對於它們自己的類是私有的並且能被派生類繼承.關鍵字keyword 也能用於指定派生,所有的公共和保護成員的基類可以變成保護的派生類.

相關主題:
private, public


public

在類中的公共數據可以被任何人訪問.關鍵字public也能用來指定派生,所有的公共和保護成員的基類可以變成保護的派生類.

相關主題:
private, protected


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;
    };

 

相關主題:
class, union


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;
    }

 

相關主題:
break, case, default, if


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++體系下用來處理異常.同trycatch 語句一起使用, 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;
    }

 

相關主題:
catch, try


true

"true"是布爾型的值.

相關主題:
bool, false


try

try 語句試圖去執行由異常產生的代碼. 查看 throw 語句獲得更多細節.

相關主題:
catch, 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;
    };

 

相關主題:
class, struct


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;
      }

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM