![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=1738827476-E8dCMxNVTTO61Cjg2qo3BdSJiB9ByEMP-0-562bbfc6bf651d31c860dfc99e238e64)
![](https://epubservercos.yuewen.com/EE4394/20637464301305906/epubprivate/OEBPS/Images/41263_51_3.jpg?sign=1738827476-hnRLv2VoCPrkdqWExKtT7uGYkIlHMO7t-0-8af1026bf72becee84d14c5385b5554c)
这里变量b的类型被声明为auto,编译器根据变量a的类型推导出变量b的类型也是int。但是这样的写法在实际开发中实用性不高,所以 auto 一般用于让编译器自动推导一些复杂的模板数据类型,以简化语法,例如:
![](https://epubservercos.yuewen.com/EE4394/20637464301305906/epubprivate/OEBPS/Images/41263_51_4.jpg?sign=1738827476-QRvBRLvBJVIBezajVnTReD7ra8S3p25J-0-9d78c386126ff9fde9304e47a9fc3725)
在上面的代码中,迭代器变量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=1738827476-BiLlt7Iv4Vp03PAuEURi7B26j7pTPNZg-0-4635b68a419abcfe908a016f47d18051)