在C语言中的auto关键字似乎用处不大,它是用来修饰局部变量的(通常可以省略)。但在C++中,auto完全与之不同,接下来就来学习一下吧。

目录

前言

一、auto简介

二、auto使用细则

1.auto与指针和引用结合起来使用

2.在同一行定义多个变量

3、auto不能推导的场景

三、基于范围for的循环

总结


前言

随着程序越来越复杂,程序中的有些类型也越来越复杂,不易拼写,容易写错。这时候,我们可以用之前提过的typedef,但是typedef也有一些不可忽视的问题。

如:

1、在使用typedef定义别名时,别名应该清晰地显示变量的具体类型。

2、在使用 typedef 定义别名时,避免给它取与标准库或操作系统有关的名称,以避免名称冲突。

但是,auto可以很好地解决这些问题。


一、auto简介

auto声明的变量必须由编译器在编译器在编译时期推导而得。

注意:使用auto定义变量时,必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导变量的实际类型。

因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量的实际类型。

二、auto使用细则

1.auto与指针和引用结合起来使用

用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&

2.在同一行定义多个变量

auto在同一行定义的变量必须同类型,否则会报错,

因为编译器只根据第一个变量类型进行推导。

 auto a = 1, b = 1.0;//会报错auto a = 1, b = 2;//相同类型可以

3、auto不能推导的场景

1、auto不能作为函数参数(因为编译器无法对函数的实际类型进行推导)

2、auto不能直接用来声明数组

三、基于范围for的循环

对于一个有范围的集合,由程序员来说明循环范围是多余的,有时候还好容易犯错误。因此C++11中引入了基于范围for的循环。

for循环后的括号由冒号“:”分为两部分,第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。

void TestFor()
{int array[] = { 1,2,3,4,5 };for (auto& e : array){e *= 2;}for (auto e : array){cout << e << " ";}
}

注意:

1、for循环迭代的范围必须是确定的

对于数组而言,就是数组中第一个元素和最后一个元素的范围;对于类而言,应该提供begin和end的方法,begin和end就是for循环迭代的范围。

2、迭代的对象要实现++和==的操作。

auto【C++初阶】相关推荐

  1. MATLAB初阶绘图

    目录 前言 一.初阶绘图 plot() ​ hold on/off 绘制样式​ legend()  绘制图例 title() 和 label() text() 和 annotation() Exerc ...

  2. 五十分钟带你看遍C语言初阶语法(总纲)

    C语言初阶语法(总纲) 此篇博客包含了前面C语言所有的基础语法,写这一期的博客不仅是为了记录自己的学习成果也是为了让更多的朋友能学到对自己有用的知识,如果总有一个知识点帮助到了你,给卑微博主点点关注加 ...

  3. 学习笔记:C++初阶【C++入门、类和对象、C/C++内存管理、模板初阶、STL简介、string、vector、list、stack、queueu、模板进阶、C++的IO流】

    文章目录 前言 一.C++入门 1. C++关键字 2.命名空间 2.1 C语言缺点之一,没办法很好地解决命名冲突问题 2.2 C++提出了一个新语法--命名空间 2.2.1 命名空间概念 2.2.2 ...

  4. 链表问题9——复制含有随机指针节点的链表(初阶)

    题目 public class Node{public int value;public Node next;public Node rand;public Node(int data){this.v ...

  5. SAP WM初阶LQ02报错 - Movement Type 901 for manual transfer orders does not exist -

    SAP WM初阶LQ02报错 - Movement Type 901 for manual transfer orders does not exist - SAP WM模块里的事务代码LQ02很有用 ...

  6. SAP WM初阶Storage Type上的SUM Indicator参数修改

    SAP WM初阶Storage Type上的SUM Indicator参数修改 仓库号NM1下的存储类型005,设置如下: 它没有激活Storage Unit Management. 目前这个存储类型 ...

  7. SAP WM初阶TO单据里的Source Destination 存储类型和货架

    SAP WM初阶TO单据里的Source & Destination 存储类型和货架 1,如下TO单,只有一个ITEM. Source storage bin 和Destination Sto ...

  8. SAP WM初阶移动类型设置里的GR Date

    SAP WM初阶移动类型设置里的GR Date SAP WM里的quant里含有GR Date栏位,该栏位的值一般都是取收货当天的日期.后续的一些先进先出或者后进先出的下架策略,可以基于Quant里的 ...

  9. SAP WM初阶之TO报表LX12 - TOs Resident Documents(Detailed Overview)

    SAP WM初阶之TO报表LX12 - TOs Resident Documents(Detailed Overview) SAP WM模块里的TO的报表LX12 – Detailed Overvie ...

  10. SAP WM初阶之TO报表LX10 - Evaluation of movements per storage type

    SAP WM初阶之TO报表LX10 - Evaluation of movements per storage type SAP WM模块有比较有用的报表,可以用来按存储类型来统计货物移动数量(TO数 ...

最新文章

  1. nginx或httpd实现负载均衡tomcat(三)
  2. 弃用notepad++
  3. 拆解多轴步进电机控制器
  4. java mp3播放器 ×××面
  5. 使用screen -r时提示“There is no screen to be resumed matching xxx”的解决办法
  6. Python 对象和类
  7. 为什么说图形数据库是大数据时代的利器?
  8. 平面直角坐标系中的旋转公式_【初中数学大招流】从平面几何到解析几何
  9. LaTeX 页面大小和页边距
  10. 从零开始学sai,5天精通板绘基础
  11. 安卓模拟器genymotion安装设置修改IMEI
  12. 一、二线城市 IT 公司大盘点!建议收藏
  13. 搜集的一些电压跟随器的问题和回答
  14. python 余弦值,Python向量余弦值 Python 求向量的余弦值操作
  15. BATH四巨头鼎立,中国云市场将走向何方?
  16. python 循环语句 教学设计_pythonwhile循环教案
  17. matlab 绘图颜色参考 linspace
  18. 【问】历史库存查询的结存数量和商品进销存报表的结存数量对不上
  19. 解析Linux商业应用现状
  20. 算法中快慢指针的应用(Java)

热门文章

  1. 为什么普通人在互联网上赚钱总是遇到坑?这是我的几条建议
  2. docker从小白到精通操作指南
  3. 快乐的android模拟器,快乐亚索模拟器手游
  4. Android跳转至抖音APP个人界面(包括极速版,火山版)
  5. 浅谈压缩算法的那些事儿
  6. 华为手机上方有“HD”标识?其实是开启了这个实用功能
  7. 他是唯一管过4个世界500强的CEO,即将掌管这家中国万亿国企!
  8. python多线程效率低_Python 多进程、多线程效率比较
  9. java中事务特性_java事务的四大特性ACID
  10. node安装cnpm淘宝镜像