常量表达式

常量表达式——常量表达式指的是值不会改变,并且计算结果在编译过程就能得出的表达式。

  C++11新增的constexpr就是为直接检测某一表达式是否是常量表达式而存在,使用constexpr声明的变量后,编译器会自动检测表达式。

  字面值类型如算术类型、引用类型和指针类型都能定义成常量表达式。

  这里需要强调的是,虽然指针和引用都能够声明为常量表达式,但是他们受到了严格的限制。指针在定义为常量表达式时,其初值必须是0,nullptr或者是存储与固定地址中的对象。constexpr指针等价于常量指针,也就是说,它只限定了声明指针本身,与所指对象无关。例如:constexpr int* a = nullptr 等价于 int* const a = nullptr; ,可以理解的是既然表达式的值在编译过程中就能确定,那么他的初值赋值对象也必须是在编译过程中就确定的。具体来说,一般在函数体内部的变量其地址都是不固定的,而函数体外部则固定,所以函数外部的变量通常可以用来初始化constexpr指针,而内部变量则不行。

原文链接: https://www.cnblogs.com/meetalone/p/17119134.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    常量表达式

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/318026

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 下午2:56
下一篇 2023年2月16日 下午2:57

相关推荐