我們都知道有 const 修飾時,就意味著是只讀(不可修改)的。
const 作用:
- 欲阻止一個變量被改變,可以使用 const 關(guān)鍵字;
- 對指針來說,可以指定指針本身為 const ,也可以指定指針?biāo)赶虻臄?shù)據(jù)為 const ,或二者同時指定為 const;
- 在一個函數(shù)聲明中,const 可以修飾形參,表明它是一個輸入?yún)?shù),在函數(shù)內(nèi)部是不能改變其值的;
- 對于類的成員函數(shù),若指定其為 const 類型,則表明是一個常函數(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;
聲明了一個 const(只讀)的 int 類型的變量 a
int const a;
聲明了一個 const(只讀)的 int 類型的變量 a
const int * a;
聲明了一個指向 const int(常整型數(shù))的指針 a,該指針指向的 int 類型的數(shù)是不可以修改的,但是指針是可以修改的。
int const * a;
聲明了一個指向 const int (常整型數(shù))的指針 a,該指針指向的 int 類型的數(shù)是不可以修改的,但是指針是可以修改的。
int * const a;
聲明了一個指向 int (整型數(shù))的 const (常)指針a,該指針指向的 int 類型的數(shù)是可以修改的,但是指針是不可以修改的。
int const * const a;
聲明了一個指向 const int (常整型數(shù))的 const (常)指針a,該指針指向的 int 類型的數(shù)不可以修改的,而且指針也是不可以修改的。
const int * const a;
聲明了一個指向 const int (常整型數(shù))的 const (常)指針a,該指針指向的 int 類型的數(shù)不可以修改的,而且指針也是不可以修改的。
static 作用:
- 函數(shù)體內(nèi) static 變量的作用范圍為該函數(shù)體,不同于 auto 變量,該變量的內(nèi)存只分配一次,因此其值在下次調(diào)用時仍維持上次的值
- 在模塊內(nèi)的 static 全局變量可以被模塊內(nèi)的所用的函數(shù)訪問,但不能被模塊外其他函數(shù)訪問;
- 在模塊內(nèi)的 static 函數(shù)只可以被這一模塊內(nèi)的其他函數(shù)調(diào)用,這個函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);
- 在類中的 static 成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝;
- 在類中的 static 成員函數(shù)屬于整個類所擁有,這個函數(shù)不能接受 this 指針,因而只能訪問類的 static 成員變量。