C++的decltype()的介绍
c++里在获取一个表达式的数据类型的时候。就是使用decltype()来获取。下面介绍下它的一些特性:
1.延迟性
decltype(f()) sum = x;
sum 的数据类型是函数f()的返回类型。但是,这得需要f()执行结束(ps:与auto不同,这里不实际计算结果)。
decltype 处理顶层const和引用的方式与auto有些不同, auto会忽略,但是decltype()不会。例如:
const int ci = 0, &cj = ci;
deltype(ci) x = 0; ---------x的数据类型是const int
decltype(cj) y = x; -------------y 的数据类型是const int&. y引用了x。
2.decltype()和引用的组合。
-------------如果变量不是一个普通的表达式,那么decltype()返回的是对应结果的数据类型。
-------------如果表达式里有解引用符,那么decltype()的结果将是引用类型。
-------------如果表达式在一层或多层括号()内,那么decltype()的结果将是引用类型。
例如:
int i = 10, *p = &i, &r = i;
decltype(r + 0) b;-----------加法的结果是int, b是int 类型。
decltype(*p) c = 20;--------c是int&。因为表达式里有解引用符。
decltype((i)) d = 10;---------d的数据类型是整型引用int&。
ps: 和auto对比?
int a = 3;
auto c1 = a; c1的数据类型是int
decltype(a) c2 = a; c2的数据类型是int
decltype((a)) c3 = a; c3的数据类型是int&
const int d = 5;
auto f1 = d; f1的数据类型是int
decltype(d) f2 = d; f2的数据类型是const int
C++的decltype()的介绍相关推荐
- decltype的介绍
摘抄一段关于decltype的介绍 decltype 类型指示符 decltype和引用 decltype 我仅仅是本文的搬运工,关于decltype关键字<C++ Primer>这本书算 ...
- decltype用法介绍
想从表达式推断出要定义的变量的类型,但不想计算表达式的值,此时可以使用decltype 语法是:delctype(表达式),其中表达式可以是变量.函数.数组等. #include <typein ...
- C++11新特性之decltype关键字的使用
一.decltype关键字介绍 decltype关键字与auto关键字相似,但又有不同之处:auto关键字是在编译时通过已经初始化的变量来确定auto所代表的类型.换句话说,auto修饰的表达式必须是 ...
- C++11中头文件type_traits介绍
C++11中的头文件type_traits定义了一系列模板类,在编译期获得某一参数.某一变量.某一个类等等类型信息,主要做静态检查. 此头文件包含三部分: (1).Helper类:帮助创建编译时常量的 ...
- 《C++ Primer 第五版》第二章(第5小节)——using和typedef,auto和decltype总结
1.using和typedef(作用:定义类型别名) 1)typedef和using都可以用来定义一个类型别名,二者在类型别名上定义没有区别.只是需要注意的是类型和类型别名的顺序,使用typedef定 ...
- C语言的VC开发环境界面介绍,【c语言在vc++6.0中编写界面程序】
到现在为止,C++ 仍然是计算机编程领域的经典语言之一,C++ 17 标准在2017上半年已经探讨确定.本期我们汇集了编程专家--祁宇(<深入应用 C++ 11>作者,C++ 开源社区 p ...
- c++11中的declval和decltype
一.declval的介绍 std::declval定义在头文件中: template<class T> typename std::add_rvalue_reference<T> ...
- Delphi历史版本介绍(二)从Delphi8到DelphiXE3
Delphi历史版本介绍(二)从Delphi8到DelphiXE3 Delphi 8 Delphi8是一个短命的版本,有点像微软的vista的感觉,没有很好的超越7,后来用被2005取代,很多人都是直 ...
- Android Q app内存压缩优化方案介绍
Android Q app内存压缩优化方案介绍 原创文章,谢绝转载! Android Q新增了部分系统性能优化方案,这里简单学习下,本篇文章先分析app compaction. 一.愿景: 在保证后台 ...
最新文章
- Linux系统管理工具-iostat、free、ps、netstat、tcpdump
- Windows核心编程 第六章 线程基础知识 (上)
- Programming Computer Vision with Python (学习笔记三)
- 微信抢红包的方案_免费公开实收20000的烤鸭店营销方案,餐饮行业可复用
- java构造方法和实例化,10. JavaSE-子类实例化过程 构造方法间调用
- 移动开发的跨平台技术发展史 | 技术头条
- myBatis的xml映射文件中传入list集合与数组做条件
- python基础教程免费视频-零基础小白python从入门到精通视频(全60集)
- LeetCode 583 两个字符串的删除操作
- display:block jquery.sort()
- ZED2 ROS下bag包的录制与回放数据
- Android-Handler机制简述
- 大数据告诉你:逃离北上广的人最后都去了哪里?
- 【shell】shell是什么,shell脚本又是什么?
- 大数据兼云计算(王明龙)讲师-JAVA-DAY05-基本数据类型
- 大数据人才如此稀缺,学什么专业才能从事大数据?
- C语言每日一练——第28天:要求输出国际象棋棋盘
- 小云管家(Rotor):一款开源的效率工具箱
- 修改WSL的Ubuntu环境下ls显示的文件夹文字颜色和背景色
- RK3399平台开发系列讲解(硬件波形解析篇)10.1、USB2.0相关硬件波形(实图)解析
热门文章
- boost::histogram模块实现导向轴的测试程序
- boost::geometry模块实现自定义Linestring示例
- boost::filesystem模块打印文件的大小的测试程序
- GDCM:gdcm::StrictScanner的测试程序
- boost::callable_traits添加member_cv的测试程序
- DCMTK:CT位置FG类测试
- VTK:Math之EigenSymmetric
- OpenCV导出模板参数文件
- OpenGL Compute Shader计算着色器的实例
- C++实现complex number复数的算法(附完整源码)