博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常量表达式 & constexpr
阅读量:6914 次
发布时间:2019-06-27

本文共 649 字,大约阅读时间需要 2 分钟。

【常量表达式】

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

常见的常量表达式:字面值、用常量表达式初始化的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函数,这种函数足够简单以至于编译时就可以计算其结果。

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

 

转载于:https://www.cnblogs.com/xzxl/p/7648831.html

你可能感兴趣的文章
【入门经典】Master和Content页面之一
查看>>
pku 2513 Colored Sticks trie树+并查集+欧拉路的判断
查看>>
淘宝技术发展(Oracle/支付宝/旺旺)(Java时代:脱胎换骨)
查看>>
纠错【2012年5月9日 JQuery-跑马灯(文字无缝向上翻动)(自已封装的第三个插件)】...
查看>>
Java编程的逻辑 (3) - 基本运算
查看>>
postgresql 死锁处理
查看>>
sum-of-two-integers
查看>>
编译器 cc、gcc、g++、CC 的区别
查看>>
SQL Server2014 SP2新增的数据库克隆功能
查看>>
USACO 状压DP练习[3]
查看>>
Gdb远程调试Linux内核遇到的Bug
查看>>
bzoj 3509: [CodeChef] COUNTARI] [分块 生成函数]
查看>>
调整Redmine的用户显示格式
查看>>
Objc执行时读取和写入plist文件遇到的问题
查看>>
Hadoop生态圈-Kafka的完全分布式部署
查看>>
Lucene全文检索
查看>>
who they are
查看>>
cellet端点的问题
查看>>
HDOJ-2602 Bone Collector
查看>>
10 个对初学者有用的 GIT 教程
查看>>