constexpr有什么用
简介
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;
}
作者:st0rmKR
出处:https://www.cnblogs.com/st0rmKR/p/17499147.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通