C++11中添加了一个constexpr的关键字,今天简单介绍一下。
const关键字我们在前面的一篇文章中已经介绍过了:https://blog.csdn.net/itlilyer/article/details/109201275
const可以修饰变量、参数、返回值、函数等等,主要实现两种表达:一是这个值不可以被修改;二是这是个常量。
constexpr是C++11新加入的用来表示该值在编译阶段就可以确定,可以是编译宏的值,#define的值,常量值等。
看下下面的代码:
#include <iostream>
constexpr int func1(const int a) {
return a + 1;
}
int func(const int a) {
// a = 5; //error, 不可以被修改
const int b = a + 1; //ok
// constexpr int c = a + 2; //error 编译时不能确定a的值
return 0;
}
int main() {
const int a = 6; //常量
constexpr int b = 7; //常量
func(a);
int res = func1(b);
std::cout << "res = " << res << "\n";
return 0;
}
代码中可以看到constexpr可以修饰函数返回值,这个值不是编译时确定的,这个时候该函数就和普通函数一样了。