constexpr和常量表達式
常量表達式
常量表達式是指值不會改變并且在編譯過程中就能得到計算結果的表達式,字面值屬于常量表達式,用常量表達式初始化的const對象也是常量表達式
const int max = 20;//常量表達式
const int limit = max + 1;//常量表達式
int staff = 10;//不是常量表達式
constexpr
在一個複雜系統中,很難分辨一個初始值到底是不是常量表達式
C++11新标準規定,允許将變量聲明為
constexpr
類型以便編譯器來驗證變量的值是否是一個常量表達式,聲明為
constexpr
的變量一定是一個常量,且必須用常量表達式來初始化
constexpr int r1 = 0;
constexpr int limit_tmp = r1 + 1;
指針和constexpr
const int* p = nullptr;//p是一個指向整數常量的指針
constexpr int* q = nullptr;//q是一個指向整數的常量指針
constexpr
把它所定義的對象設定成了頂層const