c++11引入了类型自动判断功能,使用auto关键字用于变量声明时根据表达式自动推断该变量类型或者做为函数返回值的占位符。ios
使用auto从初始化表达式中推断出变量的数据类型。c++
#include <iostream> using namespace std; int main() { auto a = 10; auto b = 1; auto s = a + b; cout << s <<endl; return 0; } /* 输出: 11 */
auto主要与decltype关键字配合使用,做为返回值类型后置时的占位符。此时,关键字不表示自动类型检测,仅仅是表示后置返回值的语法的一部分。数组
template<class T, class U> auto add(T a, U b) -> decltype(a + b) { return a + b; }
1.使用auto必须有初始化值函数
2.函数参数和模板参数不能被声明为autospa
3.使用auto进行类型推导时,编译器自动忽略顶层const,除非显示声明指针
4.使用auto进行类型推导时,若是初始化表达式时引用类型,编译器会去除引用,除非显示声明c++11
5.数组类型,auto会推导为指针类型,除非被声明为引用code