
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.7 auto关键字的用法
auto关键字在C++98/03标准中与static关键字用途相反,用于修饰所有局部变量,即这个变量具有“自动”的生命周期,但是这个规定没有任何实际用处。因而在 C++11新标准中修改了其用法,让编译器自己推导一些变量的数据类型,例如:


这里变量b的类型被声明为auto,编译器根据变量a的类型推导出变量b的类型也是int。但是这样的写法在实际开发中实用性不高,所以 auto 一般用于让编译器自动推导一些复杂的模板数据类型,以简化语法,例如:

在上面的代码中,迭代器变量iter的类型是std::map<std::string,std::string>::iterator,类型名太长,写起来很麻烦,在C++11语法中可以使用auto关键字达到同样的效果,这样会方便很多:
