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`不够用?我觉得这像是功能重复。请用例子解释一下什么时候该用哪个。提前谢谢!
<<>>