摘要:本文給出了C++關鍵字的使用頻度列表並且對一些比較生僻的關鍵字做了簡要解釋
關鍵字:C++,關鍵字,保留字,explicit,volatile,mutable,register
碼農Tactoth使用大量微軟公開的ATL和MFC的源代碼,用Python程序統計了其中C++關鍵字出現頻度,並給出了下圖:
雖然上圖統計的源碼範圍有限,但是從數據分布來看,基本上可以代表C++
的關鍵字使用現狀了!
其中有幾個比較生僻的關鍵字有必要在這裏介紹一下:
1.explicit 關鍵字用來修飾類的構造函數,表明該構造函數是顯式的。舉例說說明如下:
假設我們這樣定義了一個c++類
class MyClass
{
public:
MyClass( int num ){}
};
那麽如果構造函數MyClass前沒有關鍵字,下麵的語句
MyClass obj = 10; //ok,convert int to MyClass
在編譯時(VC++ 6.0測試)是可以通過的,進行了一個隱式轉換,相當於執行了下麵的語句
MyClass temp(10);
MyClass obj = temp;
但是如果我們在構造函數前麵加上explicit 關鍵字,即
class MyClass
{
public:
explicit MyClass( int num ){}
};
就表明構造函數不能進行上麵所說的隱式轉換
編譯時(VC++ 6.0)會給出error C2440:
'initializing' : cannot convert from 'const int' to 'class MyClass'
的錯誤報告!
2.volatile 用volatile關鍵字聲明變量,是用來告訴編譯器每次對此變量的引用都需要從內存地址中讀取,即取消
編譯器對此變量的優化編譯。
3.mutable C++類中的成員變量如果被mutable修飾,那麽在const修飾的成員函數種也可以修改這個變量的值
4.register 現在的編譯器都能夠的根據程序中的變量使用情況,將其中的使用頻率很高的變量自動設為register,而無需人為的規定了。如果自己指定了register變量,但是編譯器如果發現不合理,也會自動的取消程序員指定的register變量。