【C++初阶】auto关键字

news2024/9/24 13:25:41

 

目录

1.auto简介

2.auto的使用 


1.auto简介

在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的 是一直没有人去使用它,大家可思考下为什么? C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一 个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

补充:typid(),用于打印变量的类型

编写如下代码:

所以结论:auto关键字可以自动推导类型。 

引入auto的原因:

随着程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在:

1.类型难于拼写

2.含义不明确容易出错。

如果没有auto,我们通过一个复杂的类型来定义变量:

vector<string> v;
vector<string>::iterator it = v.begin();

如果使用auto关键字:

vector<string> v;
//vector<string>::iterator it = v.begin();
auto it = v.begin();

为什么不使用typedef来实现类型重定义:

首先使用typedef确实可以给类型取别名,也可以简化代码。如下:

不使用typedef

std::map<std::string, std::string> m{ { "apple", "苹果" }, { "orange","橙子" },{"pear","梨"} };

使用后:

typedef std::map<std::string, std::string> Map;
Map m{ { "apple", "苹果" },{ "orange", "橙子" }, {"pear","梨"} };

但是问题在于:编程时往往需要将表达式的值赋值给变量,要求在声明变量时清楚的知道表达质的类型。

2.auto的使用 

①使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种类型的声明,而是一个类型声明时的占位符,编译器在编译期间会将auto替换为变量实际的类型。

②auto不可以作为函数的参数。

 原因:如果我能调用这个函数的话,auto这个形参的类型就和我们传入的参数的类型保持一致,如果我们不调用函数的话,auto就不能匹配类型。

③auto不能做函数返回值

我们调用一个函数,主要关注的就是函数的返回值和参数,如果返回值的类型不确定,那么我们调用这个函数的结果也是不确定的。

④使用auto声明指针类型的时候,用auto和auto*没有任何区别

⑤使用auto声明引用类型时必须加上&

 ⑥使用auto在同行声明多个变量的时候,这些变量必须是相同的类型,否则编译器会报错,因为编译器实际只会对同一个类型进行推导,然后使用推导出来的类型定义其他变量。

⑦auto不能用于声明数组,这是一个规定 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1701438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解布瑞克(break)逻辑与嵌套循环的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;布瑞克逻辑是什么&#xff1f; 二、布瑞克逻辑在嵌套循环中的应用 1.…

高奇琦:从大国协调到全球性机制:人工智能大模型全球治理路径探析

内容提要 人工智能大模型全球治理的关键是对大模型进行科学分类。大模型可以分为超大模型和一般模型。对于超大模型的治理&#xff0c;可以参考核武器治理的思路&#xff0c;重点是实现超大模型的有限发展和不扩散。对于一般模型而言&#xff0c;要在安全可控的基础上发挥其对…

【算法】排序——加更

补充1个排序&#xff1a;希尔排序 思路&#xff1a;首先定义一个gap,从第0个数开始&#xff0c;每隔一个gap取出一个数&#xff0c;将取出来的数进行比较&#xff0c;方法类似插入排序。第二轮从第二个数开始&#xff0c;每隔一个gap取出一个数再进行插入排序。四轮就可以取完…

项目启动 | 晟泰克再度牵手盘古信息,引入IMS V6系统实现数字化深度推进

当前&#xff0c;中国汽车零部件行业的数字化转型正在快速推进&#xff0c;数字化工业软件已经广泛应用于汽车零部件的研发、生产和服务等各个环节&#xff0c;赋能行业实现降本减存&#xff0c;提质增效&#xff0c;有力推动了行业高质量发展。 成立于2003年的合肥晟泰克汽车…

【加密与解密(第四版)】第十八章笔记

第十八章 反跟踪技术 18.1 由BeginDebugged引发的蝴蝶效应 IsDebuggerPresent()函数读取当前进程PEB中的BeginDebugged标志 CheckRemoteDebuggerPresent() 反调试总结&#xff1a;https://bbs.kanxue.com/thread-225740.htm https://www.freebuf.com/articles/others-articl…

【数据结构】红黑树——领略天才的想法

个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 祝福语&#xff1a;愿你拥抱自由的风 目录 二叉搜索树 AVL树 红黑树概述 性质详解 效率对比 旋转操作 元素操作 代码实现 二叉搜索树 【数据结构】二叉搜索树-CSDN博客 AVL树 【数据结构】AVL树——平衡二叉搜索…

GitHub打不开的解决方案

1、打开https://sites.ipaddress.com/github.com/找到DNS Resource Records&#xff0c;复制github的ip地址&#xff0c;先保存起来&#xff1a; 140.82.112.32、打开https://sites.ipaddress.com/fastly.net/找到DNS Resource Records&#xff0c;复制其中一个ip地址&#xf…

ComfyUI 高级实战:极速稳定视频风格转绘

大家好&#xff0c;我是每天分享AI应用的萤火君&#xff01; 重绘视频一直是短视频平台上的热点内容&#xff0c;流量不错。重绘视频一般是将真实视频重绘为动漫风格&#xff0c;或者是使用新的人物形象重放视频中的人物动作&#xff0c;再或者只是重绘视频中的部分内容&#…

Android 音视频从入门到提高 -- 任务列表——task1

1.在 Android 平台绘制一张图片&#xff0c;使用至少3种不同的 APl&#xff0c;lmageView&#xff0c;SurfaceView&#xff0c;自定义 Vew 布局xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.a…

通配符证书和多域名证书主要区别以及如何选择

一、通配符证书与多域名证书的主要区别 1.覆盖域名范围 通配符证书可以保护一个主域名及其所有二级子域名&#xff0c;并对该级子域名数量无限制。这种特性使得通配符证书在拥有大量子域名的网站上非常受欢迎&#xff0c;可以大大简化证书管理和维护工作。 多域名证书允许在…

基于ChatGPT+RPA的融资融券业务担保资产风险评价

原载《会计之友》2024年第2期 作者简介 李闻一 男&#xff0c;湖北洪湖人&#xff0c;华中师范大学经济与工商管理学院教授、博士生导师&#xff0c;会计学科带头人&#xff0c;研究方向&#xff1a;财务共享、公司金融、风险管理 黄怡凡 女&#xff0c;湖北公安人&#xf…

2024中青杯数学建模竞赛A题人工智能视域下养老辅助系统的构建思路代码论文分析

2024中青杯数学建模A题论文和代码已完成&#xff0c;代码为A题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解&#xff09;、模型的评价…

Appium系列(2)元素定位工具appium-inspector

背景 如实现移动端自动化&#xff0c;依赖任何工具时&#xff0c;都需要针对于页面中的元素进行识别&#xff0c;通过识别到指定的元素&#xff0c;对元素进行事件操作。 识别元素的工具为appium官网提供的appium-inspector。 appium-inspector下载地址 我这里是mac电脑需要下…

C#子窗体嵌入主窗体

上位机开发中&#xff0c;经常会需要将子窗体嵌入到主窗体。 运行结果 核心实现&#xff1a; private void button2_Click(object sender, EventArgs e){Form3 childForm new Form3();//判断容器中是否已经打开子窗体&#xff0c;如果打开现将其关闭foreach (Control item in…

【C++】Vector的简易模拟与探索

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

并查集详解及实现

看完这篇文章你将会知道&#xff1a; 什么是并查集&#xff1f; 并查集的原理。 并查集的JAVA实现。 并查集这部分内容还是很简单的&#xff0c;相信只要认真学&#xff0c;你正在上小学二年级的表弟都能学得会。(▽ʃ♡ƪ) 目录 一、啥是并查集&#xff1f; 二、并查集的…

什么样的展馆场馆才是科技满满?就差一张智慧场馆大屏

随着科技的飞速发展&#xff0c;传统的场馆展示方式已经无法满足现代人对信息获取和体验的需求。智慧场馆大屏作为一种新型的展示方式&#xff0c;应运而生。它将高清大屏显示技术、智能交互技术、数据分析技术等融为一体&#xff0c;为观众带来更加丰富、生动的展示体验。 一…

跨境热销爆款货源哪里找?选品工具不能少

通常&#xff0c;跨境电商找热销货源的几种方法&#xff1a; 1、使用Google Trends、亚马逊销售排行等来追踪和分析当前的市场趋势和热门产品&#xff1b; 2、关注社交媒体、行业论坛和博客等渠道&#xff0c;以获取最新的市场信息和消费者反馈&#xff1b; 3、在主流的跨境…

python-编写函数判断一个三位数是否为水仙花数。

【问题描述】要求编写函数isflower(n)判断一个三位数n是否为水仙花数,如果是&#xff0c;则返回True&#xff0c;否则返回False。在主程序中要求调用该函数并输出三位数中所有的水仙花数。所谓"水仙花数"是指一个3位数&#xff0c;其各位数字立方和等于该数本身。例如…

【动态规划】零基础解决路径问题(C++)

目录 62.路径问题 解法&#xff08;动态规划&#xff09;&#xff1a; 1. 状态表⽰&#xff1a; 2. 状态转移⽅程&#xff1a; 3. 初始化&#xff1a; 4. 填表顺序&#xff1a; 5. 返回值&#xff1a; 不同路径2.0 解法&#xff08;动态规划&#xff09;&#xff1a; …