c++ auto 关键字比java var关键字使用频率更高的推测

引出

以下都是图一乐的猜测。

我在学习c++的过程中,意外的发现了一个事情,感觉c++的auto关键字比java的var关键字使用频率高很多。

不知道是不是因为我使用c++的时间比较短的原因。

而java方面,我已经有6年的使用经验,确实比较少使用到var关键字。

那么我就来尝试推测一下原因。

作用上

浅显的看,两个关键字都是用于类型的自动推导

推出时间上

  • auto 在 c++ 11 版本,也就是2011年推出,而c++11已经成为非常主流的版本
  • var关键字在Java10版本推出,也就是2018年,java10并不是一个长期支持版本,到java11开始才是真正的lts版本。

从时间上看,auto关键字推出的早

语言版本在社区使用方面

  • c++11 已经是非常主流的版本,这样一来,auto的使用率应该也随着c++11的流行而提高
  • 由于java8在很长一段时间被广泛使用,java11 及 以上的新特性推出的晚,也是近年来才逐渐被广泛使用。各大企业也才逐步向java11进行迁移

从版本方面看,var对应的java版本使用频率,相比c++11这个版本,低很多

IDE方面原因(个人感觉最重要的原因)

以两门语言的代表性编译器举例:

  • Java IntelliJ IDEA

IDEA 有一个非常非常好用的功能,那就是"introduce local variable",不管你的类型有多复杂,有多么的长,也许你记不住,都没有关系,只要按下 ctrl+auto+v 就会自动创建左值,把类型自动标出。
因此类型对于java程序员来说,不是什么大问题。再长的类型都有编译器支持而标出。
这就显得var关键字作用不是那么重要

  • c++ VisualStudio

VisualStudio,网上查询了下资料,并没有发现类似这样的功能。这就带来一个问题,对于复杂的类型,敲起来很长,很慢,容易写错。
例如:

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

而且,必须提前知道类型,才能进行编写。有时候就需要去查看源码。不太方便。

这时候auto关键字,简直是天降甘露,终于不用再写那些特别长的类型,可以让编译器自动推断了

所以,IDE方面,idea的存在让java并不是那么需要var关键字。显式的声明类型也可以提高可读性。

总结

基于上述三个原因,auto的使用频率和重要性方面,确实感觉超过了java的var关键字许多

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

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

相关文章

ADF: 获取Data Lake Storage上的文件列表并根据文件名删除文件

假设 Data Lake 上有个test的文件夹&#xff0c;有如下文件 目标&#xff1a;使用Azure Data Factory的Pipeline获取这个目录下的文件名列表&#xff0c;并删除掉以"ETC"开头的文件。 步骤&#xff1a; 1. 需要在Linked services中新建一个能连接到Data Lake的连接…

人工智能应用-实验5-BP 神经网络分类手写数据集

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;代码&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;分析结果&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;实验总结&#x1f9e1;&#x1f9e1; &#x1f9…

windows 安装 使用 nginx

windows 安装 使用 nginx nginx官网下载地址&#xff1a;https://nginx.org/en/download.html 下载稳定版本即可 下载压缩包解压到即可 进入文件夹中&#xff0c;打开命令行窗口&#xff0c;执行启动命令 start nginx.exe验证&#xff08;默认是80端口&#xff09;&#x…

工程项目管理系统的Java实现:高效协同与信息共享

在当今的工程领域&#xff0c;项目管理的高效协同和信息共享是提升工作效率、降低成本的关键。本文将向您介绍一款基于Java技术构建的工程项目管理系统&#xff0c;该系统采用前后端分离的先进技术框架&#xff0c;功能全面&#xff0c;能够满足不同角色的需求&#xff0c;从项…

失落的方舟 命运方舟台服账号怎么注册 游戏账号最全图文注册教程

探索奇幻大陆阿克拉西亚的奥秘&#xff0c;加入《失落的方舟》&#xff08;Lost Ark&#xff09;这场史诗般的冒险。这是一款由Smilegate精心雕琢的MMORPG巨作&#xff0c;它融合了激烈动作战斗与深邃故事叙述&#xff0c;引领玩家步入一个因恶魔侵袭而四分五裂的世界。作为勇敢…

【杂记-浅谈OSPF开放最短路径优先协议】

RIP协议和OSPF协议的区别 1、两者概念不同&#xff1a;路由信息协议RIP&#xff1a;分布式的基于距离向量的路由选择协议&#xff0c;RIP着重于数跳数&#xff1b;开放最短路径优先协议OSPF&#xff1a;使用分布式的基于链路状态的路由选择协议&#xff0c;OSPF着重于计算链路…

How Diffusion Models Work

introduction intuition goal 让神经网络学到图像是什么样的&#xff0c;一种方式是对数据添加不同级别的噪音&#xff0c;让神经网络能够区分细节/总体轮廓 训练一个神经网络去产生精灵 sampling nn

replace into的使用方法

replace into 使用方法 文章目录 replace into 使用方法简介工作原理使用场景使用方式语法示例 注意事项主键或唯一索引的必要性性能考虑触发器&#xff08;Triggers&#xff09;的行为外键约束数据丢失风险适用性 多个唯一键存在的情况示例说明解决方案小结 INSERT ... ON DUP…

centos环境配置之gcc/g++/cmake/opencv4

文章目录 安装高版本GCC安装cmake编译安装opencv4.5 centos 默认gcc/g 版本为4.8 且使用默认命令yum install cmake 版本为2.8 都太低&#xff0c;此处记录升级gcc/g 和cmake. 默认yum install opencv-devel 的版本是opencv2.4 编译安装opencv4.5 安装高版本GCC yum install c…

618局外人抖音:别人挤压商家“拼价格”,它默默联合商家“抢用户”?

文&#xff5c;新熔财经 作者&#xff5c;宏一 “618”来临之际&#xff0c;各电商平台和短视频平台早已打响了“促销大战”。不过&#xff0c;今年各大平台都更积极适应新的消费形式&#xff0c;调整了“大促动作”。 比如淘宝、京东带头取消了沿用十年之久的预售机制&…

FineBI学习总结

大数据分析BI工具&#xff1a;用户只需简单拖拽便能制作出丰富多样的数据可视化信息 关注点&#xff1a; 快速入门、数据加工、构建图表和分析数据、数据分析进阶 1、界面介绍 目录–仪表板–数据准备 仪表板目录–预览区域 快速上手&#xff1a; 1、数据准备2、制作仪表板3、分…

Stream流模式通信及示例

Stream流模式通信是指在计算机网络中&#xff0c;数据作为连续的字节流传输而不是独立的数据包。它是一种面向连接的通信方式&#xff0c;常见于TCP&#xff08;传输控制协议&#xff09;。以下是Stream流模式通信的基本概念和一个简单的示例。 基本概念 面向连接&#xff1…

apollo版本更新简要概述

apollo版本更新简要概述 Apollo 里程碑版本9.0重要更新Apollo 开源平台 9.0 的主要新特征如下&#xff1a;基于包管理的 PnC 扩展开发范式基于包管理的感知扩展开发范式全新打造的 Dreamview Plus 开发者工具感知模型全面升级&#xff0c;支持增量训练 版本8.0版本6.0 Apollo 里…

[AIGC] Spring Boot 2 自定义 Starter 指南

Spring Boot 包含一系列的 “Starter POMs”&#xff0c;它们都是一些方便的依赖描述符&#xff0c;你可以在你的应用中导入。在一些情况下&#xff0c;你可能想创建自己的自定义 starter。以下是创建自己的 Spring Boot Starter 的步骤。 文章目录 1. 创建基本的 Maven 项目2.…

32.MP使用条件构造器,创建SQL的查询条件,使用In并且传入的数据是集合,因集合中无元素的,导致SQL执行bug

Public List<User> userList(Long age) List<Long> idsnew ArrayList<>(); idsArray.asList(1,4,6,9); //一般通过SQL查询得到&#xff0c;则集合中就可能没有数据,导致SQL执行错误:where id in() if(ids.size<0){ return null; } LambdaQueryWapper<U…

异步编程的魔力:如何显著提升系统性能

异步编程的魔力:如何显著提升系统性能 今天我们来聊聊一个对开发者非常重要的话题——异步编程。异步编程是提升系统性能的一种强大手段,尤其在需要高吞吐量和低时延的场景中,异步设计能够显著减少线程等待时间,从而提升整体性能。 异步设计如何提升系统性能? 我们通过…

文件IO(二)

文件IO&#xff08;二&#xff09; 标准IO缓冲类型全缓冲行缓冲不缓冲 打开文件fopen 操作文件按字符读写(fgetc fputc)按行读写&#xff08;fgets fputs&#xff09;按块&#xff08;对象&#xff09;读写&#xff08;fread fwrite&#xff09;按格式化读写&#xff08;fscanf…

stm32学习-CubeIDE使用技巧

1.hex文件生成 右键工程 2.仿真调试 3.常用快捷键 作用快捷键代码提示alt/代码注释/反注释ctrl/ 4.项目复制 复制项目&#xff0c;将ioc文件名改为项目名即可图形化编辑

泛型方法、泛型类

如果不需要把类型参数所表示的对象设为实例字段&#xff0c;那么应该优先考虑创建泛型方法&#xff0c;而不是泛型类 在两种情况下&#xff0c;必须把类写成泛型类&#xff1a; 第一种情况&#xff0c;该类需要将某个值用作其内部状态【属性的返回值、字段的返回值等】&#x…

springboot课程题库管理系统-计算机毕业设计源码30812

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于课程题库管理系统 当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了课程题库管理系统 &#xff0c;它彻底改变了…