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