C++Primer学习之二#define,const,constexpr
一.#define 是预处理操作符(宏定义),编译器将在编译过程中用到该变量的地方替换成对应的值。
二.Const
const是声明常量的限定符,它可以约定一个变量为常量。
如:
Const int buffsize = 1024;
编译器将在编译过程中用到该变量的地方替换成对应的值,这个效果和#define,constexpr是一致的。
const常量只有在const int a = 1;这种形式下才会在编译期发生用值取代变量。
注意:默认情况下,const对象被设定成为仅在文件内有效。如果多个文件出现同名const变量,实际上是不同文件分别定义的独立的变量。
相关知识:
const在引用和指针的复合类型中可划分为顶层const,底层const。
如:
Const int a = 0; // 这是顶层const
Const int &b = a; // 这是底层const
Const int * const pa = &a; // 左边的const是底层const,有边的const是顶层const
三.Constexpr
① Constexpr意为常量表达式,是指值不会改变并且在编译期就能得到计算结果的表达式。声明为constexpr的变量必须要用常量表达式初始化。
如:
Const int max = 20;
Constexpr int k = max;
Constexpr int f = size(); // size函数必须是constexpr函数,即足够简单以致在编译期就能得到结果(如只有一个return语句),返回类型是constexpr的函数。
注意:
constexpr函数在包含形参时,只有实参是常量表达式时,函数调用才是常量表达式。
与const的区别:
const虽然是声明为常量,但不承诺一定在编译期初始化该变量,也即是可以在运行时在执行初始化。
如:
Const int a = f(); //f在运行期才知道返回结果
②constexpr与内联函数
为了在编译期过程中随时展开,constexpr函数被隐式的指定为内联函数。编译器要展开这俩种函数必须要知道定义,因为constexpr和内联函数都可以多次定义,但定义必须一致,故一般将定义放在头文件。
C++Primer学习之二#define,const,constexpr相关推荐
- C++Primer学习笔记(二)
17.string对象中字符的处理: cctype头文件中定义: isalnum(c) 如果c是字母或数字,则为true isalpha(c) 如果c是字符,则为true iscntrl(c) 如果c ...
- C++ Primer 学习笔记(第四章:表达式)
2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...
- OpenCV示例学习(二): 基本图形绘制算子:line(),circle(),fillPoly(), ellipse()
OpenCV示例学习(二): 基本图形绘制算子:line(),circle(),fillPoly(), ellipse() #include <opencv2/opencv.hpp>usi ...
- STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读
记录一下,方便以后翻阅~ 主要内容 1) RTC特征与原理: 2) BKP备份寄存器特征与原理: 3) RTC常用寄存器+库函数介绍: 4) 相关实验代码解读. 实验内容: 因为没有买LCD屏,所以计 ...
- Linux SMP启动流程学习(二)
Linux SMP启动流程学习(二) 3 SMP系统启动流程 3.1 SMP启动判断 源码:/arch/arm/kernel/setup.c 调用:start_kernel() -> smp_s ...
- FFmpeg学习之二 (yuv视频渲染)
FFmpeg学习之二 (yuv视频渲染) yuv简介 1.yuv是什么 2.yuv采集方式 3.yuv存储方式 4.yuv格式 yuv视频渲染 1. iOS YUV视频渲染 1.1 IOS利用open ...
- PyTorch学习笔记(二)——回归
PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...
- tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数
tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报 分类: tensorflow(4) 目录(?)[+] 本笔记目的 ...
- C++Primer学习笔记:第2章 变量和基本类型
空类型不对应具体的值,仅用于一些特殊的场合 long的长度为32位,float有7个有效位,double有16个有效位 如果数值超过了int的范围,应该用long long而不是long,long一般 ...
最新文章
- [python]_ELVE_pip2和pip3如何共存
- Unexpected key(s) in state_dict: module.backbone.bn1.num_batches_tracked
- 【深度学习】图像特征提取与通道数问题(基于U型网络)
- 每个程序员都应该挑战的6个项目
- 队列表mysql,什么是在mysql中实现消息队列表的最佳方法
- dos命令行设置网络优先级_计算机网络故障及其维修方法
- win7操作系统上,批处理文件,直接双击的时候,能运行起来。但是以管理员身份运行的时候,都闪退。请问,这是怎么回事?...
- html5 心跳效果,css3实现心脏跳动
- Oracle date日期类型使用
- 分奇偶数c语言_小白学写字(C语言)
- 如何用Baas快速在腾讯云上开发小程序-系列3 :实现腾讯云COS API调用
- @程序员,React 使用如何避坑?
- 如何开发与设计一个爆款小游戏
- etcd v2文档(2) -- 客户端http请求管理集群成员api
- url传值的一个问题解决
- 宏脉系统怎么改服务器地址大全,宏脉系统使用手册大全新.doc
- 怎样把word文档里的html格式去掉,word文档去除格式
- 一场对爱情的反思《少有人走的路:心智成熟的旅程》
- postman更换皮肤
- nandwrite 参数
热门文章
- db h2 数据类型_H2Database数据类型
- 地线与接地螺丝_电气接地的规范要求及接地的各项参数,收藏!
- 二元一次函数最值问题_初二上学期,一次函数方案设计最值问题,两类题目解题思路不一样...
- 2059 - authentication plugin 'caching_sha2_password' -navicat连接异常问题解决
- 计算机网络技术三级做题技巧,三级网络技术——我的经历,我的技巧
- Microsoft Visual Studio 无法启动程序“路径啪啦啪啦“. 系统找不到指定的文件。
- 学习《数据结构》要爬的第一步梯子
- 用python实现时间的动态(动态时钟)+ 算出某年某月星期几的所有日期
- matplotlib setting zh-hans
- 前端页面-不可编辑控制