C++基礎(chǔ)知識(shí)學(xué)習(xí)-const

** const 對(duì)象被設(shè)定為僅在文件內(nèi)有效.當(dāng)一個(gè)程序需要使用多個(gè)文件的時(shí)候,如果多個(gè)文件出現(xiàn)同名的const變量時(shí),其實(shí)等同于在不同的文件中分別定義了獨(dú)立的變量. **
** 如果想在多個(gè)文件中共享const對(duì)象,最好的做法是:對(duì)于const變量不管是聲明還是定義都添加extern關(guān)鍵字.

extern const i=1024;

const引用

const int c=1024;
const int &r1=c;//對(duì)常量的引用需要在聲明前加入const
int &r2=c;//錯(cuò)誤,c是常量,而r2是一個(gè)非常量引用聲明.
const int &r3=1024;//允許聲明一個(gè)常量引用綁定一個(gè)字面值

與之對(duì)應(yīng)的,如果綁定非常量引用

double i=3.14;
int &r=i;//錯(cuò)誤,int類型引用不能綁定到double對(duì)象上

const和指針

pointer to const:** 指向常量的指針 **

const int i=1024;
int *p=&i;//錯(cuò)誤,p是一個(gè)非常量指針
const int *p1=&i;//正確,p1是一個(gè)指向常量對(duì)象的指針

const指針

** 常量指針 ** const pointer 必須初始化

int i=1024;
int *const p=&i;//p指針?biāo)娣诺牡刂凡粫?huì)改變
const int ii=2048;
const int *const p1=?//p1是指向常量對(duì)象的常量指針

頂層 const和底層 const

** 頂層const (top-level const) 表示指針本身是一個(gè)常量 **
** 底層const (low-level const) 標(biāo)識(shí)指針?biāo)鶎?duì)應(yīng)的對(duì)象是一個(gè)常量 **

constexpr變量

c++11新標(biāo)準(zhǔn),允許將變量聲明為constexpr類型來由編譯器來驗(yàn)證變量的值是否是一個(gè)常量表達(dá)式,用constexpr聲明的變量一定是一個(gè)常量,而且必須用常量表達(dá)式來初始化.

constexpr int i=1024;
constexpr int sz=size();//只有當(dāng)將size函數(shù)聲明為constexpr函數(shù)時(shí)才成立.

要注意的是,constexpr 后跟的聲明類型必須為字面值(literal type)類型(如int,double,引用,指針),而復(fù)合類型(包含string,IO)則不屬于字面值類型.其中,一個(gè)constexpr指針的初始值必須定義為0或者nullptr.

const int *p=nullptr;//指向常量的指針(pointer to const)
constexpr int *p1=nullptr;//指向整數(shù)的常量指針
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容