一、auto 简介
在C语言中,使用 auto 修饰的变量,是具有自动存储器的局部变量,但很少有人去使用它,在C++11中,auto 有了新的含义,它不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto 声明的变量必须由编译器在编译时期推导而得。
我们通过一个简单的代码来了解一下
注意:auto就是一个占位符,编译器会根据初始化来推演出类型,填充位置,所以auto必须要初始化
二、使用细则
1.用auto声明指针类型时,用auto和auto*没有任何区别
用auto声明引用类型时则必须加&
ra1就是与a相同类型的初始化变量
2.当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对 第一个类型进行推导,然后用推导出来的类型定义其他变量。
有红色的波浪线,代码编译失败,c和d的初始化表达式类型不同
三、在哪些情况下,auto 会推演失败
1. auto不能作为函数的参数
2. auto不能直接用来声明数组
3. 为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法 ,只是一个占位符
4. auto不能定义类的非静态成员变量
5. 实例化模板时不能使用auto作为模板参数
四、新式for循环
使用这种方法,比原来的方法简单了很多,使用这种方法有什么要注意的呢?
1.对于数组而言,就是数组中第一个元素和最后一个元素的范围;对于类而言,应该提供begin和end的 方法,begin和end就是for循环迭代的范围。
2.迭代的对象要实现++和==的操作。