c++ constexpr和const
时间: 2023-05-02 13:06:27 浏览: 145
C++中的const和constexpr详解
const和constexpr都是C++中用来表示常量的关键字。但是它们有些不同。
const关键字用于声明常量,在程序执行期间常量的值是不能被修改的。这个常量可以用在变量定义和函数参数中。比如:
```
const int pi = 3.14; // 常量变量pi
void func(const int num); // 常量函数参数num
```
constexpr关键字通常用于声明编译时常量,也就是对于某个值,它的值在编译时就可以计算出来。比如:
```
constexpr int n = 10 + 20; // 编译时常量n的值为30
constexpr int m = n + 5; // 编译时常量m的值为35
```
constexpr关键字用于定义一个常量表达式,因此也可以用在函数参数和返回值类型中。C++11中,constexpr函数被限制不能有任何副作用,也就是不能改变任何非const变量的值。这个限制已经被C++14解除。例如:
```
constexpr int square(const int x) {
return x * x;
}
```
总的来说,const关键字用于定义只读的变量,而constexpr关键字用于定义在编译时可计算的常量。两个关键字虽然有相似的作用,但是语义和用法有些不同。
阅读全文