c++基础 - constexpr
const expression常量表达式,指值不会改变,并且在编译过程中就能得到计算结果的表达式。
复杂系统难以分辨一个初始值是否是常量表达式,因此提出constexptr以提示编译器,用来验证变量值是否是常量表达式。
constexpr int myadd(int x, int y){ //constexpr函数应足够简单,以使得编译期就可以计算出结果
return x+y;
}
int main(void){
int x = , y = ;
constexpr int a = myadd(,); //正确,因为函数实参是常量表达式
//constexpr int a = myadd(x,y); //错误,实参非常量无法在编译期间确定
//constexpr int a = x+y; //错误,x+y的值要在具体运行时才得到
const int b = x + y; //正确,但不是常量表达式
std::cout<<a<<" "<<b<<std::endl; int array[] = {1,2,3};
constexpr int soa = sizeof(array); //正确,sizeof()是c++操作符,可以在编译期给出结果
std::cout<<sizeof(array)<<" "<<soa<<std::endl;
}
其他相关知识点:
1. sizeof()返回一个对象或类型所占的内存字节数
2. array就是{1,2,3}所占内存地址的别名,(数组与指针的区别)
参考:
[1] c++ primer P58, P214
c++基础 - constexpr的更多相关文章
- [c++] constexpr and literal class
稀奇古怪的新特性,菜鸟在此啄上一啄. 1. When should literal classes be used in C++? 2. int i; // not constant const ...
- 小猪猪逆袭成博士之C++基础篇(二) 常量、处理类型、自定义头文件
小猪猪逆袭成博士之C++基础篇(二) const .auto. decltype 上一章我们介绍了一些常用的类型和常见的问题,下面再介绍一些学习的时候不是特别常用但是在实际工程中很有用的一些东西. 一 ...
- LINQ基础(三)
一.并行LINQ System.Linq名称空间中包含的类ParallelEnumerable可以分解查询的工作,使其分布在多个线程上. 尽管Enumerable类给IEnumerable<T& ...
- C++总结:C++中的const和constexpr
C++中的const可用于修饰变量.函数,且在不同的地方有着不同的含义,现总结如下. const的语义 C++中的const的目的是通过编译器来保证对象的常量性,强制编译器将所有可能违背const对象 ...
- Template 基础篇-函数模板(待看
Template 基础篇-函数模板 Template所代表的泛型编程是C++语言中的重要的组成部分,我将通过几篇blog对这半年以来的学习做一个系统的总结,本文是基础篇的第一部分. Template ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
随机推荐
- CSS入门介绍(一)
css 层叠样式表(英文名:Cascading Style Sheets),主要用于美化网页 1.css的表现形式 1.1 行内样式(内嵌样式) 写在标签内的样式,写在标签的开始部分的内部,style ...
- Python 遇到的坑
1. 循环导入 AB 互相引用,或者 中间掺入了更复杂的一些--用局部导入解决
- 51nod 1387 移数字
任意门 回来拉模版的时候意外发现这个题还没写题解,所以就随便补点吧. 题意其实就是要你求n的阶乘在模意义下的值. 首先找出来一个最大的$m$满足$m^2<=n$,对于大于$m^2$部分的数我们直 ...
- [LeetCode] All Paths From Source to Target 从起点到目标点到所有路径
Given a directed, acyclic graph of N nodes. Find all possible paths from node 0 to node N-1, and re ...
- 白盒测试实践-day01
一.任务进展情况 了解本次测试的主要任务,进行小组分工. 二.存在的问题 由于最近比较忙,任务来不及做. 三.解决方法 坚持一下.
- dtFindNearestPolyQuery :: process
dtFindNearestPolyQuery :: process(const dtMeshTile* tile, dtPoly** polys, dtPolyRef* refs, int count ...
- css_css 盒子水平居中 垂直居中
1.盒子垂直居中---常用3种方法 方法2: 2.盒子水平居中 3.垂直水平都居中 之前学过 1.结合上面的知识 2.flex布局可以做到 3.css3 translate 定位
- Django集成Bootstrap美化后台
1.pip install bootstrap-admin 2.编辑项目下的settings.py,增加下面行,放在最前面 3.编辑项目下的settings.py,增加下面行
- 线性表->应用->一元多项式
文字描述 在数学上,一个一元多项式可以按升幂写成如下形式. 它由n+1个系数唯一确定.因此,在计算机里,可以用一个线性表P来表示,P中每一项的指数i隐含在其系数pi的序号里. 但是在通常的应用中, ...
- Fiddler抓取数据并分析(完整的配置教程)
一.Fiddler现在的移动应用程序几乎都会和网络打交道,所以在分析一个 app 的时候,如果可以抓取出其发出的数据包,将对分析程序的流程和逻辑有极大的帮助.对于HTTP包来说,已经有很多种分析的方法 ...