const 和static const 的區(qū)別
最近在使用MFC的時(shí)候遇到一些困惑,就是我定義的一些常量他的使用域到底是多大,最后為了這個(gè)問(wèn)題專門做個(gè)個(gè)測(cè)試,查找了一些資料,算是對(duì)這個(gè)問(wèn)題做了個(gè)還算詳細(xì)的介紹吧!
const就是只讀的意思,只在聲明中使用;
static一般有2個(gè)作用:規(guī)定作用域和存儲(chǔ)方式
對(duì)于局部變量,static規(guī)定其為靜態(tài)存儲(chǔ)方式,每次調(diào)用的初始值為上一次調(diào)用的值,調(diào)用結(jié)束后存儲(chǔ)空間不釋放;
對(duì)于全局變量,此變量只在當(dāng)前文件(把文件看作為作用域)可見;對(duì)于static函數(shù)也是在當(dāng)前模塊內(nèi)函數(shù)可見.
static const 應(yīng)該就是上面兩者的合集.
下面分別說(shuō)明:
全局:
const,只讀的全局變量,其值不可修改.
static,規(guī)定此全局變量只在當(dāng)前模塊(文件)中可見.
static const,既是只讀的,又是只在當(dāng)前模塊中可見的.
文件:
文件指針可當(dāng)作一個(gè)變量來(lái)看,與上面所說(shuō)類似.
函數(shù):
const,返回只讀變量的函數(shù).
static,規(guī)定此函數(shù)只在當(dāng)前模塊可見.