前提引入:

1.类型名,在绝大多数编程时,我们都会引入类型来定义一个我们需要的数据。

类型众多,偶尔我们会遇见一串类型名,使用起来无比复杂。存在拼写错误,含义不明确导致出错的问题。

列如:

std::map<std::string, std::string> m{ { "apple", "苹果" }, { "orange", "橙子" },
{"pear","梨"} };std::map<std::string, std::string>::iterator it = m.begin();

在这串代码中,std::map<std::string, std::string>::iterator 是一个类型,但是该类型太长了,特别容易写错。如何简化呢。

在C中,typedef 作为一个可以取别名的一个关键字。确实可以省事许多,却任然存在缺陷。

typedef std::map<std::string, std::string> Map;

若 typedef 为指针取了别名。存在小问题。

typedef char* pstring;
int main()
{const pstring p1; // 编译成功还是失败?const pstring* p2; // 编译成功还是失败?return 0;
}

C++是怎么做的呢,设计师为了不想写复杂的类型,引入了auto关键字。

auto :

1.在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量
       2.C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得
        注:既然auto作为推导而得,在使用auto时,必须初始化。

auto 的使用场景

1. auto 在推导指针是,不必再加*号;

2.auto在使用引用时,必须遵循规则加上&号;

3.不能作为函数的参数使用

4.不能直接用来声明数组。

5.一行多个数据推导必须同类型

int main()
{//1int x = 10;auto a = &x;auto* b = &x;auto& c = x;cout << typeid(a).name() << endl;cout << typeid(b).name() << endl;cout << typeid(c).name() << endl;*a = 20;*b = 30;c = 40;//5void TestAuto(){auto a = 1, b = 2;auto c = 3, d = 4.0;  //错}return 0;
}

C++ : auto关键字相关推荐

  1. auto关键字详解 C++

    C++98 auto 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期: ...

  2. C++ auto 关键字的使用

    C++ auto 关键字的使用 https://www.cnblogs.com/KunLunSu/p/7861330.html C++98 auto 早在C++98标准中就存在了auto关键字,那时的 ...

  3. C++11 auto 关键字学习1

    在之前的 C++ 版本中,auto 关键字用来指明变量的存储类型,它和 static 关键字是相对的.auto 表示变量是自动存储的. C++11 中,使用它来做自动类型推导.也就是说,使用了 aut ...

  4. c++ auto 关键字

    C++11 赋予 auto 关键字新的含义,使用它来做自动类型推导.也就是说,使用了 auto 关键字以后,编译器会在编译期间自动推导出变量的类型,这样我们就不用手动指明变量的数据类型了 #inclu ...

  5. 【小白学习C++ 教程】二十、C++ 中的auto关键字

    @Author: Runsen 在 C++ 11 之前,每种数据类型都需要在编译时显式声明,在运行时限制表达式的值,但在 C++ 新版本之后,包含了许多关键字,允许程序员将类型推导留给编译器本身. 有 ...

  6. C++ auto关键字

    C++ auto关键字 1)编译器根据初始值判断变量类型 2)必须初始化 3)一条语句声明多个变量(只能有一个基本类型,const int和int属于不同类型)auto i = 0, *p = &am ...

  7. C++中auto关键字

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105010028 a ...

  8. C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))

    内联函数 概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数,在编 ...

  9. 关于C/C++中的“auto”关键字

    C/C++ 98标准 C++03标准 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期.此用法是多余的,因为即使定义变量时不加" ...

  10. 2-6:C++快速入门之内联函数,auto关键字,C++11基于范围的for循环和nullptr

    文章目录 一:内联函数 (1)宏函数的缺陷 (2)内联函数的概念 (3)内联函数的特性 二:auto关键字(C++11) (1)auto简介 (2)auto使用注意事项 三:基于范围的for循环(C+ ...

最新文章

  1. 获取ServerManager
  2. SCI科技论文写作技巧-核心价值
  3. 系统中已安装了vmware,请先卸载干净并重启电脑
  4. 基于块分割及CNN的文档矫正与光照消除方法 (有源码和数据)
  5. ue设置MySQL_MySQL的安装与配置——详细教程 - Winton-Q
  6. 以rpm包形式升级Linux驱动
  7. [转载]----Hadoop2.0命令手册
  8. Java生成随机数SecureRandom
  9. 新广告法违规词敏感词检测软件淘宝违规词检测查询工具软件
  10. 自动驾驶时代,巨头Tier 1的困境与突围
  11. gavin中文是什么意思_Gavin[加文,盖温]的中文翻译及英文名意思
  12. 微信开发 JS接口安全域名修改
  13. Python之路(第二十三篇) 面向对象初级:静态属性、静态方法、类方法
  14. 解决VirtualBox CentOS8无法调整分辨率的问题
  15. java家庭记账代码_Java的家庭记账本程序(B)
  16. 第十二章:组播 — PIM-SM
  17. 人生苦短,我学Python-008:程序设计方法学
  18. c语言中数据类型的课件,C语言课件(基本数据类型).ppt
  19. 【Simulink教程案例2】基于Simulink的模糊控制器设计与实现
  20. 百度云下载速度慢,怎样用迅雷下载百度云中的资源——2016-5-22最新最实用

热门文章

  1. 蒂夫·乔布斯十大经典语录
  2. Fairy Tale (《传奇》英文版)
  3. 得之坦然!失之淡然!
  4. 软考哪个证含金量比较高,如何备考?
  5. iOS distribution发布证书过期或者被手动revoke了app会被下架吗?
  6. 越读越有味的句子 绝对经典语录 人生感悟格言
  7. php 微信公众号分享自定义标题,简介,图片
  8. 新零售mysql设计(快递表 退货表)
  9. 2020快手最新版去水印的方法
  10. 测试绝地求生fps软件,绝地求生大逃杀fps怎么提升 fps提升详细教程