【常量表达式】

一个这样的表达式:值不会改变 && 在编译过程中就能够得到计算结果

常见的常量表达式:字面值、用常量表达式初始化的const对象

一个对象是不是常量表达式由它的数据类型和初始值共同决定:

  const int cc = 1;  cc是一个常量表达式,因为它①是一个常量,②值在编译过程就能够得到(使用字面值初始化的)。

  int cz = 1;       cz尽管由字面值初始化,但它的数据类型是int,所以它不是常量表达式。

  const int cd = get_val();  cd不是一个常量表达式,尽管它是一个常量,但它的值直到运行时才能获取到。

运用到常量表达式的情形:数组的大小

【constexpr变量】

因为很难分辨一个初始值到底是不是常量表达式,所以我们推出了constexpr类型。

声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化:

  constexpr int mf = 20;

  constexpr int lm = mf + 1;

  constexpr int sz = get_val();

不能使用普通函数作为constexpr变量的初始值,所以上面的get_size()必须是constexpr函数,这种函数足够简单以至于编译时就可以计算其结果。

用处,比如你想设置一个常量表达式作为数组的大小,便可以设置如上变量。

最新文章

  1. css的margin
  2. Hibernate 应用
  3. ubuntu set ntpdate
  4. JQuery MultiSelect(左右选择框)
  5. NHibernate 3.2+的 Map by Code 实例
  6. 【BZOJ2648】【kd_tree】SJY摆棋子
  7. Linux 套接字编程中要注意的细节
  8. 微软ajax组件
  9. English - in the light of(按照,根据)与according to的区别是什么
  10. windows svn利用钩子实现代码同步到web目录
  11. Tomcat系列(8)——Tomcat运行模式连接数和线程池
  12. Zookeeper注册中心和Dubbo-Admin管理平台的搭建
  13. Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
  14. weex stream 之fetch的get、post获取Json数据
  15. 每日一问(常用的集合接口和类有哪些【二】)—ArrayList类和数组之间的转换
  16. NOIP2011 D1 T2选择客栈
  17. Mybatis 中延时加载
  18. poj 1182 食物链(高级的带权并查集)
  19. 同时安装Python2和Python3,如何兼容并切换使用详解
  20. 【LabVIEW技巧】策略模式

热门文章

  1. SpringMVC知识点总结
  2. nginx 方向代理
  3. window/linux下获取文件MD5
  4. Spirng+SpringMVC+Mybatis(一)
  5. Jmeter的安装教程【图文】
  6. git中如何忽略文件上传?
  7. 【Js】Jquery遍历-each(function(e){})中的e和$(this)的区别
  8. mysql5.6主主复制及keepalived 高可用
  9. CentOs安装Mysql和配置初始密码
  10. ListView学习