C++11引入了constexpr(常量表達式)關鍵字,與const關鍵字有所不同。它們的主要區別如下:
1. const是給變量加上只讀屬性,而constexpr是給變量或函數加上常量屬性。constexpr變量必須在編譯時就可以計算出來,而constexpr函數的返回值也必須是常量并且在編譯時必須可以計算出來。
2. constexpr可以用來定義數組和結構體等復雜數據類型,而const則只能用來定義單個變量。
3. constexpr變量通常被用作模板參數,因為在編譯時就可以計算出來,可以用來定義數組大小和模板參數等。而const變量不一定在編譯時就可以計算出來,不能被用作模板參數。
4. constexpr支持函數語義,可以使用條件語句和循環語句等語句,可以實現復雜的計算。而const只能包含簡單的賦值語句,不能包含流程控制語句。
綜上所述,constexpr是用來定義常量的關鍵字,只有在編譯時就可以計算出來的值才能用它來定義。而const則是用來定義只讀變量的關鍵字,它不能用來定義數組或結構體等復雜數據類型。