const關鍵字來源自constant,即是“常數、常量”的含義。在C/C++中,用于限定一個不能改變其值的變量。const類型的對象必須在定義的時候進行初始化(可以在編譯時或者在運作時),并且一旦初始化完成後,這個值就不能再被改變。通常情況下,const對象的有效範圍是目前檔案;如果多個檔案中出現了同名的const變量,則認為是每個檔案中都定義了不同的變量。如果希望在多個檔案中共享這個對象,則在聲明和定義的時候添加extern關鍵字,指明該對象并非本檔案獨有,可能被其他檔案使用。
const引用:
對于一個const變量,也一樣可以對其定義一個引用。我們知道,C++不允許随意改變某個引用所綁定的對象,是以一個對const對象引用不論是引用對應對象還是這個對象的值都不能改變,是以對于const對象的引用也可以稱之為“常量引用”。由此帶來的一個要求就是,指向該const對象的引用也必須是const類型,如:
定義一個const引用可以綁定一個非const的值,但是不允許通過該引用修改這個值,如:
const和指針:
const與指針的關系相對于引用要複雜一些,因為涉及到指向常量的指針和自身是常量的指針兩種關系。兩者的差別如下:
如何差別呢?簡單地看,最前面的const表示指針所指向的是一個const對象,而*後面的const表示指針不能指向其他的對象,也就是指針本身是const類型的。這兩者也分别被稱作底層const和頂層const。如果某個對象是const型,那指向這個對象的指針也必須以const定義在最前面。