1. 程式人生 > >C++複習筆記——C++ 關鍵字

C++複習筆記——C++ 關鍵字

文章目錄

關鍵詞總覽索引

關鍵詞 關鍵詞 關鍵詞 關鍵詞
asm else new this
auto enum operator throw
bool explicit private true
break
export protected try
case extern public typedef
catch false register typeid
char float reinterpret_cast typename
class for return union
const friend
short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct
wchar_t
double mutable switch while
dynamic_cast namespace template

關鍵詞詳解

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

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

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

this
this 返回呼叫者本身的指標。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

extern "C" 宣告語句
extern "C" { 宣告語句塊 }

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

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

typedef  型別 定義名;

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

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

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

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

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

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

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

reinterpret_cast
用法:

reinpreter_cast<type-id> (expression)

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

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

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

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

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

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

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

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

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

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

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

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

const_cast

const_cast<type_id> (expression)

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

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

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

using
表明使用 namespace

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

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

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

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

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

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

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

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

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

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

static_cast
用法:

static_cast < type-id > ( expression ) 

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

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

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

int volatile nVint;

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

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

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

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

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

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

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

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

while
迴圈

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

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

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