常量表达式
常量表达式——常量表达式指的是值不会改变,并且计算结果在编译过程就能得出的表达式。
C++11新增的constexpr就是为直接检测某一表达式是否是常量表达式而存在,使用constexpr声明的变量后,编译器会自动检测表达式。
字面值类型如算术类型、引用类型和指针类型都能定义成常量表达式。
这里需要强调的是,虽然指针和引用都能够声明为常量表达式,但是他们受到了严格的限制。指针在定义为常量表达式时,其初值必须是0,nullptr或者是存储与固定地址中的对象。constexpr指针等价于常量指针,也就是说,它只限定了声明指针本身,与所指对象无关。例如:constexpr int* a = nullptr 等价于 int* const a = nullptr; ,可以理解的是既然表达式的值在编译过程中就能确定,那么他的初值赋值对象也必须是在编译过程中就确定的。具体来说,一般在函数体内部的变量其地址都是不固定的,而函数体外部则固定,所以函数外部的变量通常可以用来初始化constexpr指针,而内部变量则不行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通