当前位置: 首页 > news >正文

智能的编织:C++中auto的编织艺术

在这里插入图片描述

在C++的世界里,auto这个关键字就像是一个聪明的助手,它能够自动帮你识别变量的类型,让你的代码更加简洁和清晰。下面,我们就来聊聊auto这个关键字的前世今生,以及它在C++11标准中的新用法。

auto的前世

在C++11之前,auto是一个存储类说明符,用来声明具有自动存储期的局部变量。这就意味着,用auto声明的变量只在声明它的函数或代码块中有效。但是,随着时间的推移,这个用法变得不那么重要了,因为所有的局部变量默认就是自动存储期的。

auto的今生

到了C++11,auto关键字焕发了新生。它不再是一个存储类说明符,而是变成了一个类型说明符。这意味着,当你用auto声明一个变量时,编译器会自动推断这个变量的类型。这听起来是不是很酷?让我们来看几个例子。

1. 基本用法
auto x = 5; // x的类型被推断为int
auto y = 3.14; // y的类型被推断为double
auto z = "Hello"; // z的类型被推断为const char[6]

在上面的例子中,编译器根据赋值表达式自动推断出了变量的类型。

2. 指针和引用

当你用auto声明指针或引用时,需要注意以下几点:

auto ptr = &x; // ptr的类型被推断为int*
auto ref = x; // ref的类型被推断为int&// 如果你想要声明一个指向int的指针,你需要这样写:
auto ptr2 = static_cast<int*>(&x); // ptr2的类型被推断为int*

这里,ptr是一个指向int类型的指针,而ref是一个引用,指向int类型的变量x

3. 多变量声明

当你在同一行声明多个变量时,这些变量必须具有相同的类型,因为编译器只对第一个变量进行类型推导。

auto a = 1, b = 2, c = 3; // 正确,a, b, c都是int类型

如果尝试声明不同类型的变量,编译器会报错。

4. 函数参数和返回值

auto不能作为函数参数的类型,但你可以用它作为函数的返回类型。不过,使用auto作为返回类型时需要谨慎,因为它可能会导致返回类型的歧义。

auto func() {return 1; // 返回类型被推断为int
}
5. 数组声明

auto不能直接用来声明数组,因为数组的类型不仅包括元素的类型,还包括数组的大小。编译器无法自动推断数组的大小。

// 错误:不能使用auto声明数组
// auto arr = new int[5];

总结

auto关键字在C++11中提供了一种方便的方式来声明变量,让编译器自动推断变量的类型。这不仅简化了代码,也减少了因类型错误而导致的编译错误。但是,使用auto时也需要小心,特别是在声明指针、引用和数组时,以及在函数参数和返回值中使用时,要确保类型的正确性和代码的清晰性。

最后,本篇文章到此结束,感觉不错的友友们可以一键三连支持一下笔者,有任何问题欢迎在评论区留言哦~
在这里插入图片描述

相关文章:

智能的编织:C++中auto的编织艺术

在C的世界里&#xff0c;auto这个关键字就像是一个聪明的助手&#xff0c;它能够自动帮你识别变量的类型&#xff0c;让你的代码更加简洁和清晰。下面&#xff0c;我们就来聊聊auto这个关键字的前世今生&#xff0c;以及它在C11标准中的新用法。 auto的前世 在C11之前&#x…...

订单分库分表

一、引言 在当今互联网时代&#xff0c;随着电商、金融等行业的快速发展&#xff0c;订单数量呈爆炸式增长。传统的单一数据库存储订单信息的方式面临着巨大的挑战&#xff0c;如数据存储容量有限、查询性能下降、数据备份和恢复困难等。为了解决这些问题&#xff0c;分库分表技…...

【温度表达转化】

【温度表达转化】 C语言代码C代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 利用公式 C5∗(F−32)/9 &#xff08;其中C表示摄氏温度&#xff0c;F表示华氏温度&#xff09; 进行计算转化。 输出 输出一行&#x…...

封装一个web Worker 处理方法实现多线程

背景&#xff1a; 开启多线程处理一段耗时的逻辑 简化Worker使用 直接上代码&#xff1a; 以下是封装的函数直接复制即可 /*** 封装一个worker的启动函数 用于开启一个新的线程 来处理一些耗时的操作* param {object} paremdata 传递给worker的参数* param {function} call…...

unity3d————屏幕坐标,GUI坐标,世界坐标的基础注意点

在Unity3D中&#xff0c;GUI控件的起始坐标与屏幕坐标的起始点并不完全相同&#xff0c;具体说明如下&#xff1a; GUI控件的起始坐标 绘制GUI界面时使用的坐标以屏幕的左上角为(0,0)点&#xff0c;右下角为(Screen.width, Screen.Height)。不过&#xff0c;对于GUI控件的具体…...

MySQL基础-单表查询

语法 select [distinct] 列名1&#xff0c;列名2 as 别名... from数据表名 where组前筛选 group by分组字段 having组后筛选 order by排序的列 [asc | desc] limit 起始索引&#xff0c;数据条数 测试数据 # 建测试表 create table products (id int primary key a…...

Web安全之SQL注入---基础

文章目录 SQL注入简介SQL注入基础SQL注入分类SQL注入流程 SQL注入简介 什么是SQL注入&#xff1f; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理…...

MongoDB笔记03-MongoDB索引

文章目录 一、前言1.1 概述1.2 MongoDB索引使用B-Tree还是BTree&#xff1f;1.3 B 树和 B 树的对比1.4 总结 二、索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引 三、索引的管理操作3.1 索引的查看3.2 索引的创建3.2.1 单字段索引3.2.2 复合索引 3.3 索引的移除3.3.1 指定索…...

Docker基础(一)

Docker 简介 常用命令 镜像 #搜索镜像 docker search nginx #下载镜像 docker pull nginx #下载指定版本镜像 docker pull nginx:1.26.0 #查看所有镜像 docker images #删除指定id的镜像 docker rmi e784f4560448 # 删除多个镜像 docker rmi bde7d154a67f 94543a6c1aef e784…...

解决 IntelliJ IDEA Maven 项目 JDK 版本自动变为 1.5 的问题

一、问题描述 在使用 IntelliJ IDEA 创建 Maven 项目时&#xff0c;经常会遇到一个问题&#xff1a;项目的默认编译版本被设置为 JDK 1.5&#xff0c;即使系统中安装的是更高版本的 JDK。这不仅会导致编译时出现警告&#xff0c;还可能引起兼容性问题。每次手动修改编译版本后…...

SDL事件相关

文章目录 事件相关的函数和数据结构用户自定义事件代码相关&#xff1a; 事件相关的函数和数据结构 SDL_WaitEvent :等待一个事件SDL_PushEvent 发送一个事件SDL_PumpEvents(): 将硬件设备产生的时间放入事件队列 &#xff0c;用于读取事件&#xff0c;在调用该函数之前&#…...

探索App Intents:让你的应用与Siri无缝互动的新方式

苹果推出了一个新框架——App Intents&#xff0c;使开发者可以在iOS 18.2、macOS 15.2等平台上集成Siri和Apple Intelligence&#xff0c;实现对应用内容的读取和操作。 App Intents使应用的功能和内容能无缝融入系统体验中&#xff0c;例如Siri、Spotlight搜索、快捷指令和小…...

冒泡排序法

编写程序实现冒泡排序。 相关知识 为了完成本关任务&#xff0c;要了解冒泡法排序的算法思想&#xff1a; 对所有相邻记录的关键字值进行比较&#xff0c;如果是逆序则将其交换&#xff0c;最终达到有序化&#xff0c;其处理过程为&#xff1a; 将整个待排序的记录序列划分成…...

MATLAB 将fig格式另存为可编辑的eps格式,但乱码问题解决

fig格式图像正常&#xff0c;但通过手动导出后的eps格式图像导入到AI中会乱码&#xff0c;如下图所示 一、主要问题应该是: 文件名中的字符和格式受到了操作系统和文件系统的限制&#xff0c;具体而言是 figure 的Name 属性中包含了特殊字体或字符&#xff08;如逗号&#xff…...

Hadoop:单节点配置YARN

目录 一、Hadoop YARN介绍 二、单节点配置YARN 2.1 配置yarn-site.xml 文件 2.2 配置 mapred-site.xml 文件 2.3 启动 Hadoop 和 YARN 2.4 浏览器访问 三、YARN的常用命令 3.1 启动和停止 YARN 3.2 查看和管理应用程序 3.3 查看和管理节点 3.4 查看和管理队列 3.5 …...

【前端】Svelte:组件间通信

在 Svelte 中&#xff0c;组件间的通信主要通过 props 和事件机制来实现。父组件可以向子组件传递数据&#xff0c;子组件也可以通过事件将信息反馈给父组件。在本教程中&#xff0c;我们将深入了解 Svelte 的组件通信机制&#xff0c;包括 props 和事件的使用方法、事件监听、…...

数学建模-----假设性检验引入+三个经典应用场景(三种不同的假设性检验类型)

文章目录 1.假设检验的过程1.1问题的提出1.2证据的引入1.4做出结论 2.案例二&#xff1a;汽车引擎排放2.1进行假设2.2假设检验的类型2.3抽样分布的类型2.4单尾&#xff08;双尾&#xff09;检验2.5t检验 3.案例三&#xff1a;特鲁普效应3.1统计显著和效果显著3.2心理学现象3.3进…...

Unity——对RectTransform进行操作

文章目录 前言在Unity中对RectTransform进行操作是处理UI布局和动画的关键部分。下面是一些常见的操作及其代码示例&#xff0c;可以帮助你在脚本中灵活地控制UI元素的位置、大小和锚点。 一、获取和设置位置二、获取和设置大小1.设置大小&#xff08;Size Delta&#xff09; 三…...

使用jmeter查询项目数据库信息,保存至本地txt或excel文件1108

知识点1&#xff1a;使用jmeter把项目数据库的数据导出&#xff0c;并使用jmeter导出数据库的数据 步骤1&#xff1a;使用jmeter把项目数据库的数据导出 &#xff08;1&#xff09;测试计划-添加- 线程组setUp线程组 setUp线程组&#xff1a;添加-配置元件-JDBC Connection …...

ubuntu 22.04 server 安装 mysql 5.7.40 更改 datadir 目录 LTS

ubuntu 22.04 server 安装 mysql 5.7.40 更改 datadir 目录 LTS 参考 ubuntu 22.04 server 安装 mysql 5.7.40 LTS https://blog.csdn.net/wowocpp/article/details/143564015 vip Ubuntu中修改MySQL5.7数据存储路径 https://www.cnblogs.com/jiaojiner/p/15236639.html u…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...