一、auto的引入
随着程序越来越复杂,程序中使用的类型也越来越复杂。
例如std::map<std::string, std::string>::iterator是一个类型,但是该类型太长了,容易写错。
用auto声明的变量可以自动推导出变量的类型
二、auto的使用细则
1. auto声明的变量必须初始化
实际上auto并非是一个类型的声明,而是一个类型声明时的占位符。编译器在编译阶段根据初始化的表达式来auto的实际类型,然后将auto替换为变量实际的类型。
2.auto声明指针变量和引用变量
用auto声明指针变量时,auto与auto*都可以;但是用auto声明引用变量时,只能使用auto&
int x = 0;
auto p1 = &x;
auto* p2 = &x;
auto& q = x;
3.auto在同一行声明多个变量
auto在同一行声明多个变量时,这些变量必须类型相同,因为编译器只会对第一个类型进行推导
4.auto不能用来声明函数形参和数组类型
auto不能用来声明函数形参类型
auto不能用来声明数组类型