我們都知道有 const
修飾時(shí),就意味著是只讀(不可修改)
的翰铡。
const 作用:
- 欲阻止一個(gè)變量被改變,可以使用 const 關(guān)鍵字;
- 對(duì)指針來(lái)說(shuō)讽坏,可以指定指針本身為 const 锭魔,也可以指定指針?biāo)赶虻臄?shù)據(jù)為 const ,或二者同時(shí)指定為 const;
- 在一個(gè)函數(shù)聲明中路呜,const 可以修飾形參迷捧,表明它是一個(gè)輸入?yún)?shù),在函數(shù)內(nèi)部是不能改變其值的胀葱;
- 對(duì)于類的成員函數(shù)漠秋,若指定其為 const 類型,則表明是一個(gè)常函數(shù)抵屿,不能修改類的成員變量庆锦。
那么如下的一些聲明又是表達(dá)什么意思呢?
const int a;
int const a;
const int * a;
int const * a;
int * const a;
int const * const a;
const int * const a;
const int a;
聲明了一個(gè) const(只讀)的 int 類型的變量 a
int const a;
聲明了一個(gè) const(只讀)的 int 類型的變量 a
const int * a;
聲明了一個(gè)指向 const int(常整型數(shù))的指針 a轧葛,該指針指向的 int 類型的數(shù)是不可以修改的搂抒,但是指針是可以修改的。
int const * a;
聲明了一個(gè)指向 const int (常整型數(shù))的指針 a尿扯,該指針指向的 int 類型的數(shù)是不可以修改的求晶,但是指針是可以修改的。
int * const a;
聲明了一個(gè)指向 int (整型數(shù))的 const (常)指針a衷笋,該指針指向的 int 類型的數(shù)是可以修改的芳杏,但是指針是不可以修改的。
int const * const a;
聲明了一個(gè)指向 const int (常整型數(shù))的 const (常)指針a辟宗,該指針指向的 int 類型的數(shù)不可以修改的爵赵,而且指針也是不可以修改的。
const int * const a;
聲明了一個(gè)指向 const int (常整型數(shù))的 const (常)指針a慢蜓,該指針指向的 int 類型的數(shù)不可以修改的亚再,而且指針也是不可以修改的。
static 作用:
- 函數(shù)體內(nèi) static 變量的作用范圍為該函數(shù)體晨抡,不同于 auto 變量氛悬,該變量的內(nèi)存只分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值
- 在模塊內(nèi)的 static 全局變量可以被模塊內(nèi)的所用的函數(shù)訪問(wèn)耘柱,但不能被模塊外其他函數(shù)訪問(wèn)如捅;
- 在模塊內(nèi)的 static 函數(shù)只可以被這一模塊內(nèi)的其他函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明它的模塊內(nèi)调煎;
- 在類中的 static 成員變量屬于整個(gè)類所擁有镜遣,對(duì)類的所有對(duì)象只有一份拷貝;
- 在類中的 static 成員函數(shù)屬于整個(gè)類所擁有士袄,這個(gè)函數(shù)不能接受 this 指針悲关,因而只能訪問(wèn)類的 static 成員變量谎僻。