![C++服务器开发精髓](https://wfqqreader-1252317822.image.myqcloud.com/cover/623/39479623/b_39479623.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.7 auto关键字的用法
auto关键字在C++98/03标准中与static关键字用途相反,用于修饰所有局部变量,即这个变量具有“自动”的生命周期,但是这个规定没有任何实际用处。因而在 C++11新标准中修改了其用法,让编译器自己推导一些变量的数据类型,例如:
![](https://epubservercos.yuewen.com/EE4394/20637464301305906/epubprivate/OEBPS/Images/41263_51_2.jpg?sign=1739347227-hoaxsrkr8MXCybEi7J1DO2Pk8HzZi5ui-0-816ecfd8422899d23fadcae4182fb102)
![](https://epubservercos.yuewen.com/EE4394/20637464301305906/epubprivate/OEBPS/Images/41263_51_3.jpg?sign=1739347227-CT8Db7UdxlkHCKx1vvcgbam0eVAtrRh6-0-55f5d6d0a38f6f7fe93ddad6c0bea688)
这里变量b的类型被声明为auto,编译器根据变量a的类型推导出变量b的类型也是int。但是这样的写法在实际开发中实用性不高,所以 auto 一般用于让编译器自动推导一些复杂的模板数据类型,以简化语法,例如:
![](https://epubservercos.yuewen.com/EE4394/20637464301305906/epubprivate/OEBPS/Images/41263_51_4.jpg?sign=1739347227-SxWtAPWVu0CbFVGKBmx8w4XbSvrVTKOU-0-f716675b348df1fbcce0690143729af0)
在上面的代码中,迭代器变量iter的类型是std::map<std::string,std::string>::iterator,类型名太长,写起来很麻烦,在C++11语法中可以使用auto关键字达到同样的效果,这样会方便很多:
![](https://epubservercos.yuewen.com/EE4394/20637464301305906/epubprivate/OEBPS/Images/41263_52_1.jpg?sign=1739347227-tXGeXlLr6Z9b5T7rBMhGpaV5tspovVMY-0-cc41666cbb6695fa27060f866a80de9c)