在 C++ 中,constexpr 是一个关键字,用于修饰变量、函数或者类。
如果一个变量或者函数被声明为 constexpr,那么它的值或者返回值必须是一个常量表达式,也就是说它的值在编译时就已经确定。
例如,你可以使用 constexpr 声明一个常量整数:
constexpr int kMaxSize = 10;
你也可以使用 constexpr 声明一个常量函数,该函数的返回值必须是一个常量表达式:
constexpr int Fibonacci(int n) {
return (n <= 1) ? n : Fibonacci(n - 1) + Fibonacci(n - 2);
}
int main() {
constexpr int result = Fibonacci(5); // result 的值是 5
return 0;
}
如果一个类被声明为 constexpr,那么该类的所有成员函数都必须是 constexpr 函数。
constexpr class Complex {
public:
constexpr Complex(double real, double imag) : real_(real), imag_(imag) {}
constexpr double Real() const { return real_; }
constexpr double Imag() const { return imag_; }
private:
double real_;
double imag_;
}