Avatar ·

C++中constexpr和const的区别是什么?

你好!我最近开始学习C++11,遇到了关键字`constexpr`。我知道`const`意味着变量的值在初始化后不能被修改。但`constexpr`似乎也能让变量变成常量。那么区别是什么呢? 例如,我可以写: ```cpp const int x = 5; constexpr int y = 5; ``` 两种方式都有效。但我听说`constexpr`可以用于函数。我试了一下: ```cpp constexpr int square(int n) { return n * n; } int main() { const int a = square(5); // 能工作吗? constexpr int b = square(5); // 也能工作吗? int arr[ square(3) ]; // 这样可以吗? } ``` 这段代码能编译,但我不明白实际的优势在哪里。什么时候应该用`constexpr`而不是`const`?为什么仅仅`const`不够用?我觉得这像是功能重复。请用例子解释一下什么时候该用哪个。提前谢谢! <<>>

关键区别: