constexpr字面意思為常量表格式, 用于指示編譯器在編譯時計算表達式的值。
1、作為常量表格式,必須在編譯時就能確定其值。如:constexpr int size = 9527;
2、可以修飾函數,要求能在編譯時求值,所以傳的參數也必須是編譯時常量。
測試代碼:
constexpr int factorial(int n) {return (n <= 1) ? 1 : n * factorial(n - 1);
}void testConstexpr() {constexpr int fact4 = factorial(4); // 編譯時計算值為24int arr[fact4]; // 使用編譯時常量,這里編譯通過cout << "fact4: " << fact4 << endl;
}
打印:
ok.? ?和const的區別是,const保證的是運行時不可修改。