行业知识
C++关键词auto详解
2026-10-19 15:38:43
来源:互联网转载
��得泉:个人主页
个人专栏:《Linux操作系统》 《C++从入门到精通》 《LeedCode刷题》
键盘敲烂,年薪百万!
一、小思考
随着我们对于C++的不断学习,遇到的程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在:
1.类型难于拼写
2.含义不明确导致容易出错
举个栗子来说:
#include #include int main(){ std::map m{ { "apple", "苹果" }, { "orange", "橙子" },{"pear","梨"} }; std::map::iterator it = m.begin(); while (it != m.end()) { //.... } return 0;} std::map::iterator 是一个类型,但是该类型太长了,特别容易写错。 聪明的同学可能已经想到:可以通过typedef给类型取别名,比如: #include #include typedef std::map Map;int main(){ Map m{ { "apple", "苹果" },{ "orange", "橙子" }, {"pear","梨"} }; Map::iterator it = m.begin(); while (it != m.end()) { //.... } return 0;} 使用typedef给类型取别名确实可以简化代码,但是typedef有会遇到新的难题: typedef char* pstring;int main(){ const pstring p1; // 编译成功还是失败? const pstring* p2; // 编译成功还是失败? return 0;} 在编程时,常常需要把表达式的值赋值给变量,这就要求在声明变量的时候清楚地知道表达式的类型。然而有时候要做到这点并非那么容易,因此C++11给auto赋予了新的含义。
二、auto简介
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?
C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。
int TestAuto(){ return 10;}int main(){ int a = 10; auto b = a; auto c = 'a'; auto d = TestAuto(); cout
上一篇:远程服务器如何取证安装?
下一篇:免费云服务器怎么买流量?