const與constexpr的區別

2021-10-08 08:12:47 字數 425 閱讀 2560

const:物件變數一旦建立後其值就不能再改變,const修飾的變數必須初始化。

constexpr:在c++11新標準中規定,允許將變數宣告為constexpr型別以便由編譯器來驗證變數的值是否是乙個常量表示式。

例如

int a=12;

const int b=a;//編譯能通過,程式執行到此處是初始化,此時a已經初始化值

constexpr int c=a;//編譯不能通過,因為constexpr修飾的變數在編譯時

//就初始化,此時a並沒有初始化

constexpr int aa=12;

constexpr int bb=aa;//編譯成功

通過以上的例子我們能夠理解,const與constexpr變數修飾的值都不可以被改變,但是constexpr在編譯時就檢查其值是否為常量。

C 中 const 和 constexpr特性

const 是乙個關鍵字修飾符,用於修飾常量,說明變數是不可改變的常量,一經定義賦值不可改變。const 修飾的變數具有以下特點 const 常量只能在宣告的時候賦值。如果乙個類內的成員變數被宣告為const 常量,則該成員變數必須使用初始化列表的方式進行初始化。const 修飾指標變數是規則有點特...

詳解C 中的const和constexpr

目錄 const int a 10 表示int物件a,是乙個常量,不可以改變值,從編譯器生成二進位制角度看,生成的a存放在.rodata段,也就是唯讀 readonly 區域。不過並不絕對,有的時間統計優化等級開的高,也不取位址,可能會優化成立即數在.text段中。class caaa const ...

const與指標,const與函式

const與指標 常量指標 指向常量的指標 int b 500 1 const int a b 2 int const a b 以上中 a不允許改變,指標a可變 指標常量 指標本身是常量 3 int const a b 指標a不允許改變,a可改變 常量指標常量 4 const int const a...