當前位置: 首頁>>編程語言>>正文


C++關鍵字列表及生僻關鍵字簡介

摘要:本文給出了C++關鍵字的使用頻度列表並且對一些比較生僻的關鍵字做了簡要解釋
關鍵字:C++,關鍵字,保留字,explicit,volatile,mutable,register
碼農Tactoth使用大量微軟公開的ATL和MFC的源代碼,用Python程序統計了其中C++關鍵字出現頻度,並給出了下圖:

2
圖片來源51CTO.COM

雖然上圖統計的源碼範圍有限,但是從數據分布來看,基本上可以代表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變量。

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/39.html,未經允許,請勿轉載。