小工具知识网

当前位置: 首页 > 行业知识 > C++关键词auto详解

行业知识

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 

上一篇:远程服务器如何取证安装?

下一篇:免费云服务器怎么买流量?