常量表达式 & constexpr
2024-09-04 11:12:52
【常量表达式】
一个这样的表达式:值不会改变 && 在编译过程中就能够得到计算结果
常见的常量表达式:字面值、用常量表达式初始化的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函数,这种函数足够简单以至于编译时就可以计算其结果。
用处,比如你想设置一个常量表达式作为数组的大小,便可以设置如上变量。
最新文章
- css的margin
- Hibernate 应用
- ubuntu set ntpdate
- JQuery MultiSelect(左右选择框)
- NHibernate 3.2+的 Map by Code 实例
- 【BZOJ2648】【kd_tree】SJY摆棋子
- Linux 套接字编程中要注意的细节
- 微软ajax组件
- English - in the light of(按照,根据)与according to的区别是什么
- windows svn利用钩子实现代码同步到web目录
- Tomcat系列(8)——Tomcat运行模式连接数和线程池
- Zookeeper注册中心和Dubbo-Admin管理平台的搭建
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- weex stream 之fetch的get、post获取Json数据
- 每日一问(常用的集合接口和类有哪些【二】)—ArrayList类和数组之间的转换
- NOIP2011 D1 T2选择客栈
- Mybatis 中延时加载
- poj 1182 食物链(高级的带权并查集)
- 同时安装Python2和Python3,如何兼容并切换使用详解
- 【LabVIEW技巧】策略模式