C++11系列学习之四----auto
来源:互联网 发布:java 用户登录次数 编辑:程序博客网 时间:2024/06/05 21:00
在哪些情况下要申明类型:
定义变量类型
函数返回值,函数参数
表达式返回变量类型
auto关键字原理
在定义变量的时候必须申明类型,c++是强语言类型,在编译阶段需要知道类型,这样的好处是程序效率更高,而动态语言不需要类型申明的需要自推导变量类型。使用了auto是不是c++效率会变慢?完全不是,因为在编译阶段编译器已经帮程序员推导好了变量的类型。前提条件是编译器可以根据当前的程序的状态推导出变量类型。只是编译器更加智能,我猜想编译时间岂不更长了。我这里使用了visual studio 2013/2015,均已经支持大部分C++11的特性.
auto关键字使用场景
场景一,申明普通变量
auto num = 10;
场景二,函数返回值,如果没有auto,总是要巧那么长的返回值,有了auto关键字后,是不是心里感觉很爽。
vector<string> str_vec; vector<string>::iterator it_old = str_vec.begin(); auto it_new = str_vec.begin();场景三,申明函数返回值
c++11:
auto add(int a, int b)->int { return a + b; }
c++14已经去掉了烦人的->int,我已经在visual studio 2015中实验。
auto add(int a, int b){return a + b;}
auto使用需要注意的几个问题
1、使用auto关键字的变量必须有初始值,编译器才能推导出变量类型。
2、在传递const变量的时候,使用auto必须自己加const
const int a =10; auto b = a; // b的类型是int const auto c = a; // c 的类型是const int
3、关于很奇葩的函数返回值
auto关键字只能在函数的返回值使用auto关键字,并且在函数尾还需要标注返回类型
这样看起来很奇葩,莫不如不用auto关键字,但我认为委员会的人没这么闲,上google查了下,有下面两条原因:
1、他们认为把返回值放在函数后面更好看(特别是返回值很长的时候)
2、C++14将会把讨人烦得返回值去掉,编译器直接支持自推导。
本文转载自:《C++11 之auto》
0 0
- C++11系列学习之四----auto
- 《C Primer Plus》 学习笔记系列之(四)
- 学习Gtkmm系列之四
- c++11学习笔记之auto
- C++primer学习之:类型别名和auto
- C++Primer学习之三auto和decltype
- linux 常用C函数系列之四
- linux 常用C函数系列之四
- Objective-C如何使用日期、时间与定时器学习系列之四
- java nio 系列学习之四
- Android Fragment系列学习笔记之四
- Javascript学习系列(四)脚本之家
- Andriod学习系列之(四)Intent初涉
- SASS学习系列之四--------- 快速入门
- c 之auto register volatile
- 深度学习之Auto Encoder
- C11 学习系列1 : auto类型
- C++11 之auto
- 源码阅读:SDWebImage
- Unity中使用UGUI与ScrollView的练习
- css3的transform2D用法
- Math类的使用
- java中字符串倒序方法
- C++11系列学习之四----auto
- Android0908<十三>(部分Service、 ContentProvider、 BroadcastReceiver)
- 电路板热转印实践
- 关于IOC和DI的理解
- table 中超出单元格内容使用省略号表示
- js获取url中文乱码问题解决方案
- POJ Pseudoprime numbers (判断素数+快速幂取模)
- 分析信号质量用功率谱分析还是频谱分析?
- poj 3190 经典贪心(区间图:色数=团数)