constexpr
是 C++11 引入的关键字,用于表示常量表达式。它允许编译器在编译时计算表达式的值,从而提高程序的运行效率,减少运行时开销。随着 C++14 和 C++17 的发展,constexpr
的功能和应用场景也得到了进一步扩展。
主要作用
- 编译时计算:使用
constexpr
关键字声明的变量或函数,可以在编译时计算其值,而不是在运行时求值。 - 优化代码:通过编译时计算常量表达式,可以减少运行时的计算开销,提高程序的执行效率。
- 类型安全:在某些情况下,
constexpr
定义的常量比宏定义的常量更具类型安全性
- constexpr 变量
声明一个编译时常量:
constexpr int value = 10
constexpr
变量必须使用常量表达式进行初始化:
constexpr int square(int x) {
return x * x;
}constexpr int result = square(10); // 编译时计算 10 * 10
- constexpr 函数
是在编译期间就可以求值的函数
constexpr int factorial(int n) {
return (n <= 1) ? 1 : (n * factorial(n - 1));
}
constexpr int fact_5 = factorial(5); // 编译时计算 5