auto和decltype
目录
1. auto的作用:
2. auto使用时的注意点
3. decltype 的作用
4. auto和decltype配合使用,实现追踪返回类型
1. auto的作用:
auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。从这个意义上讲,auto并非一种“类型”声明,而是一个类型声明时的“占位符”,编译器在编译时期会将auto替换为变量实际的类型。
2. auto使用时的注意点
<1>. 使用auto定义变量时,必须初始化
<2>. VS不支持在函数参数列表中使用auto,QT中支持
<3>. auto变量不能作为自定义类型的成员变量
struct TEST
{int a;auto b; //错误,编译不过auto c = 10; //错误,哪怕初始化了也编译不过
};
<4>. auto不能用于数组
auto a[3] = {1, 2, 3}; //错误,哪怕初始化也编译不过
<5>. 模板实例化对象的类型不能是 auto类型
vector<int> a = {1, 2, 3}; //可以
vector<auto> b = {1, 2, 3}; //错误,哪怕初始化了也编译不过
3. decltype 的作用
decltype实际上有点像auto的反函数, auto可以让你声明一个变量,而decltype则可以从一个变量或表达式中得到其类型。根据decltype获得的类型,可以定义新的该类型变量
int i;decltype(i) j = 0;cout << typeid(j).name() << endl; // 打印出"i", g++表示integerfloat a;double b;decltype(a + b) c;cout << typeid(c).name() << endl; // 打印出"d", g++表示doublevector<int> vec;typedef decltype(vec.begin()) vectype; // decltype(vec.begin()) 改名为 vectypevectype k; //decltype(vec.begin()) k; for (k = vec.begin(); k < vec.end(); k++){// 做一些事情}
可以使用 typeid(a).name()来显示变量a的型别;
4. auto和decltype配合使用,实现追踪返回类型
追踪返回类型用于函数模板中,根据函数运算结果推导函数返回值类型。
在泛型编程中,函数中参数的型别不定,如果函数返回值型别是函数参数运算后得到,那会导致函数的返回值型别不定,无法在函数声明时指定函数返回值。所以,使用auto和decltype来实现追踪返回类型;在函数名和参数列表后面指定返回类型;
template <typename T1, typename T2>
auto func( T1& t1, T2& t2) -> decltype( t1*t2 )
{return t1*t2;
}
auto和decltype相关推荐
- C++11 auto和decltype关键字
auto 可以用 auto 关键字定义变量,编译器会自动判断变量的类型.例如: auto i =100; // i 是 int auto p = new A(); // p 是 A* auto k = ...
- 浅谈auto与decltype函数的区别
auto与decltype都是C++里处理类型的指示符,它们的使用场景如下: auto decltype 在我们需要给变量赋值的时候,简单的程序往往可以通过观察得出表达式的类型,但在一些大型程序中这样 ...
- 《C++ Primer 第五版》第二章(第5小节)——using和typedef,auto和decltype总结
1.using和typedef(作用:定义类型别名) 1)typedef和using都可以用来定义一个类型别名,二者在类型别名上定义没有区别.只是需要注意的是类型和类型别名的顺序,使用typedef定 ...
- C++ auto和decltype关键字
可以用 auto 关键字定义变量,编译器会自动判断变量的类型.例如: auto i =100; // i 是 int auto p = new A(); // p 是 A* auto k = 3434 ...
- C++新特性探究(6.1):auto和decltype的类型推断差异所在
例 附上例代码: #include <iostream> using namespace std;int Max(int a,int b) {return a>b?a:b; }cla ...
- stdmove 跟 左键引用 区别_C++ auto和decltype的区别
通过<C++ auto>和<C++ decltype>两节的学习,相信大家已经掌握了 auto 和 decltype 的语法规则以及使用场景,这节我们将 auto 和 decl ...
- C++11新特性——auto和decltype
一.auto和decltype 1.auto和decltype都是C++11新增的关键字,都用于类型自动推导. 类型格式 auto varname = value; //auto的语法格式 declt ...
- auto和decltype的用法总结
auto和decltype的用法总结 本博客转载自:https://www.cnblogs.com/XiangfeiAi/p/4451904.html 1 auto 1.1 auto的作用 一般来说, ...
- auto和decltype的区别
C++ auto和decltype关键字 C++11新标准引入了auto和declty这两个类型推断关键字,auto的推断是基本上针对赋值类型,而decltype则常常希望重表达式中推断出要定义变量的 ...
最新文章
- grafana官方使用文档_使用 Loki 采集微服务日志
- VS中调试时不能关联源代码问题
- java chinapay_通过PHP/Java Bridge来实现ecshop的chinapay支付接口
- php7 myrypt,nginx + php 配置
- Android事件分发机制:基础篇:最全面、最易懂
- 3l如何使用_慢阻肺患者如何选购呼吸机和制氧机,需要注意哪些?
- 工作两个月的感受随笔
- 基于Keras的卷积神经网络(CNN)可视化
- AjaxControlToolkit工具控件之Accordion错误解决方法
- elementui如何在input 框中搜索_【挑战自学Python编程】第八天:while循环以及input()函数...
- IIS6配置后仍然无法解析json文件解决办法
- 美国数据不佳美元仍跳升,只因欧元区问题更多
- Linux Swap交换分区介绍
- 【序列推荐】KDD2018|STAMP---基于注意力的短期记忆优先的推荐
- html中如何调整图片的对比色,风光照片如何调出冷暖对比色?后期案例分享
- java+pom.xml+是什么_pom.xml文件是啥
- 开启微信公众号定位服务器,微信公众号定位学会这几步就够了!
- 雷神911air 装黑苹果
- Android基站定位详解
- join me - gregorian 歌词翻译