简介
constexpr
是C++11引入的关键字。它的意思是常量表达式,但是与之前的常量const
不同,constexpr
会在编译期就计算完该值,从而提高了性能。同时constexpr
也可以用来修饰函数、类的构造函数等,不止是变量。
适用于constexpr
的类型
根据微软的文档,只有文本类型或者返回文本类型的函数能被指定为constexpr
。
文本类型:
- 标量类型:算术类型 (整型或浮点值) 、枚举类型成员、指针类型、指针到成员类型和
std::nullptr_t
。 基本类型通常是标量类型。 void
。- 引用。
- 引用的数组。
- 具有普通析构函数以及一个或多个 constexpr 构造函数且不移动或复制构造函数的类。 此外,其所有非静态数据成员和基类必须是文本类型且不可变。
constexpr
函数
constexpr
函数的返回值可以用来初始化constexpr
变量。
constexpr
函数,如果给他传参是常量表达式,那么他会返回constexpr
,否则它就和正常函数一样工作。
一个例子
constexpr int a_len()
{
return 5;
}
constexpr int fibonacii(const int n)
{
return n == 1 ? n : n * fibonacii(n - 1);
}
int main()
{
char arr[a_len()]; // 合法
constexpr int f = fibonacii(5); // 编译期完成计算
return 0;
}
标签:return,函数,int,什么,constexpr,类型,构造函数
From: https://www.cnblogs.com/st0rmKR/p/17499147.html