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

auto自动类型推导总结

auto 自动推导的规则很多、很细,当涉及移动语义、模板等复杂的规则时,很容易绕进去。因此,在使用 auto 进行自动推导时,牢记以下几点:

  • auto 推导出的是 “值类型”,不会是 “引用类型”。
  • auto 可以和 const、& 这些类型修饰符结合,得到新的类型;在自动推导时,先不考虑额外的修饰,看看推导出的是什么类型,然后再加上修饰符。
  • 类成员变量初始化时,不允许使用 auto 推到类型。

普通类型推导

auto p = new int(20);   // p 的类型为 int*auto str1 = "hello";     // str1 的类型C风格字符串 const char*,至于为什么是const,很好理解,"hello" 是字面值即常量auto str2 = "hello"s;    // str2 的类型为 string,需要打开名字空间 using namespace std::literals::string_literals(C++14及之后)auto str3 = std::string("hello");auto r = &str2;     // string*auto i = 1;     // intauto l = 2L;    // longauto ll = 3LL;  // long longauto f = 1.23f; // floatauto d = 3.1415926535;  // doubleauto vec_init = {1, 2, 3, 4, 5};        // std::initializer_list<int>auto vec = std::vector<int>{1, 2, 3, 4, 5};     // std::initializer_list<int>
}

和 const、volatile、*、& 结合

与 const 结合

const auto i = 10;          // const int
const auto f = 0.23f;       // const float
const auto d = 1.234345;    // const doubleconst auto s = std::string("hello");    // const stringconst auto vec_init = {1, 2, 3, 4, 5};        // std::initializer_list<int>
const auto vec = std::vector<int>{1, 2, 3, 4, 5};     // std::initializer_list<int>auto ch = "hello";          // const char *
const auto chr = "hello";   // const char *const

一个需要注意的点是,当使用字符串字面值推导时,推导出的时 const char * ,而当与 const 结合时,推导出的是 const char *const

与 & 结合

auto 根据表达式的结果推导变量类型,推导的是值类型。因此若希望推导的是引用类型,则需要和 & 结合。

auto i = 10;    // int
auto &ri = i;   // int&auto &r = 10;   // 错误,r被推导出 int&,而左值引用不能绑定右值auto &&r = 10;  // 正确,rr被推导出 int&&,右值引用只能绑定右值
int getInt() {int num = 1;return num;
}auto i = getInt();      // int
auto &r = getInt();     // 错误,getInt()返回的是将亡对象,是右值
auto &&rr = getInt();   // 正确,int&&,右值引用绑定到右值

待补充。。。(2023年10月23日)

相关文章:

auto自动类型推导总结

auto 自动推导的规则很多、很细&#xff0c;当涉及移动语义、模板等复杂的规则时&#xff0c;很容易绕进去。因此&#xff0c;在使用 auto 进行自动推导时&#xff0c;牢记以下几点&#xff1a; auto 推导出的是 “值类型”&#xff0c;不会是 “引用类型”。auto 可以和 cons…...

透视2023,如何看清中国SaaS的未来之路?

导读&#xff1a;什么是更适合中国市场的SaaS道路&#xff1f; 如果用一个关键词概括2023年的SaaS产业&#xff0c;很多人会想到&#xff1a;难。 在过去一年时间内&#xff0c;SaaS产业投融资环境巨变&#xff0c;一级市场投融资笔数和金额骤减。根据IT桔子数据&#xff0c;20…...

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测(自注意力机制)

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09; 目录 分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09;分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Mat…...

博客系统-项目测试

自动化博客项目 用户注册登录验证效验个人博客列表页博客数量不为 0 博客系统主页写博客 我的博客列表页效验 刚发布的博客的标题和时间查看 文章详情页删除文章效验第一篇博客 不是 "自动化测试" 注销退出到登录页面,用户名密码为空 用户注册 Order(1)Parameterized…...

Inspeckage,动态分析安卓 APP 的 Xposed 模块

前提 我在不久前写过《 APP 接口拦截与参数破解》的博文&#xff1b;最近爬取APP数据时又用到了相关技术&#xff0c;故在此详细描述一下 Inspeckage 的功能。&#xff08;环境准备本文不再赘述&#xff09; 功能 在电脑上访问 http://127.0.0.1:8008 就可以看到 inspeckage…...

Windows详细安装和彻底删除RabbitMQ图文流程

RabbiitMQ简介 RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff1a;Advanced Message Queue Protocol&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而聚类和故障转移是构建在开放…...

自定义表单规则

const checkF (rule, value, callback) > { if (!value || value ) { callback(new Error(请输入XXXX)); } else { var params new URLSearchParams(); params.append(参数名, value); axios.post(url, params).then(operation > { if (operation && operatio…...

Spring 中 Bean 的作用域有哪些?Spring 中有哪些方式可以把 Bean 注入到 IOC 容器?

Spring 框架里面的 IOC 容器&#xff0c;可以非常方便的去帮助我们管理应用里面的Bean 对象实例。我们只需要按照 Spring 里面提供的 xml 或者注解等方式去告诉 IOC 容器&#xff0c;哪些 Bean需要被 IOC 容器管理就行了。 生命周期 既然是 Bean 对象实例的管理&#xff0c;那意…...

【01低功耗蓝牙开发】

低功耗蓝牙 低功耗蓝牙背后有个基本的概念&#xff1a;任何事物都有状态。状态可以是任何东西&#xff0c;如温度&#xff0c;电池状态等越简单的系统越便宜&#xff0c;开发更迅速&#xff0c;包含更少的错误&#xff0c;更加强健。一种技术想要获得成功必须降低成本。服务器…...

【Java 进阶篇】Java BeanUtils 使用详解

Java中的BeanUtils是一组用于操作JavaBean的工具&#xff0c;它允许你在不了解JavaBean的具体内部结构的情况下&#xff0c;访问和修改其属性。本文将详细介绍Java BeanUtils的使用&#xff0c;包括如何获取和设置JavaBean的属性&#xff0c;复制属性&#xff0c;以及如何处理嵌…...

YugaByteDB -- 全新的 “PostgreSQL“ 存储层

文章目录 0 背景1 架构1.1 Master1.2 TServer1.3 Tablet 2 读写链路2.1 DDL2.2 DML2.3 事务 3 KEY 的设计4 Rocksdb 在 YB 中的一些实践总结 0 背景 YugaByteDB 的诞生也是抓住了 spanner 推行的NewSQL 浪潮的尾巴&#xff0c;以 PG 生态为基础 用C实现的 支持 SQL 以及 CQL 语…...

众佰诚:抖音上做生意卖什么好

随着科技的发展&#xff0c;越来越多的人开始利用网络平台进行创业。抖音作为目前最火的短视频平台之一&#xff0c;也成为了许多人选择的创业渠道。那么&#xff0c;在抖音上做生意卖什么好呢? 首先&#xff0c;我们可以考虑一些具有创新性和独特性的产品。例如&#xff0c;手…...

【Redis】环境配置

环境配置 Linux版本&#xff1a; Ubuntu 22.04.2 LTS 下载redis sudo apt install redis 启动redis redis-server 输入redis-server启动redis竟然报错了&#xff0c;原因是redis已经启动&#xff0c;网上大多数的解决方案如下&#xff1a; ps -ef | grep -i redis 查询redi…...

设计交换机原理图前应先理清的框图

一、系统布局图 需重点考虑“外壳、电源、风扇、主板&#xff08;包含MAC、CPU、PHY&#xff09;、指示灯、管理网口/串口、电口/光口等连接器”在整机中的大致位置&#xff0c;在系统布局图中予以体现。 二、系统框图 &#xff08;1&#xff09;电源整体框图&#xff1b; &…...

Bellman-ford 贝尔曼-福特算法

Bellman-ford算法可以解决负权图的单源最短路径问题 --- 它的优点是可以解决有负权边的单源最短路径问题&#xff0c;而且可以判断是否负权回路 它也有明显的缺点&#xff0c;它的时间复杂度O&#xff08;N*E&#xff09;&#xff08;N是点数 &#xff0c; E是边数&#xff09…...

Docker数据目录迁移解决方案

前置工作 使用以下命令查询当前docker数据目录安装路径&#xff1a; docker info | grep "Docker Root Dir"下文以 /home/rain/docker 这个路径作为要迁移的新 Docker 安装(存储)目录 迁移方案 方法一&#xff1a;软链接 停掉Docker服务&#xff1a; systemctl…...

公共字段自动填充、菜品管理

一、公共字段填充 1.1、问题分析 1.2、实现思路 1.3、代码开发 1.3.1、自定义注解 import com.sky.enumeration.OperationType;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import jav…...

前端面试 面试多起来了

就在昨天 10.17 号,同时收到了三个同学面试的消息。他们的基本情况都是双非院校本科、没有实习经历、不会消息中间件和 Spring Cloud 微服务,做的都是单体项目。但他们投递简历还算积极,从今年 9 月初就开始投递简历了,到现在也有一个多月了。 来看看,这些消息。 为…...

Qt常见类名关系整理

1、QAbstractItemModel与QAbstractItemView 模型的基类: The QAbstractItemModel class provides the abstract interface for item model classes. Inherited By: QAbstractListModel&#xff0c;QAbstractProxyModel,and QAbstractTableModel 视图的基类: The QAbstractIte…...

YOLO8实战:yolov8实现行人跟踪计数

本篇文章首先介绍YOLOV8实现人流量跟踪计数的原理,文末附代码 引言:行人跟踪统计是智能监控系统中的重要功能,可以广泛应用于人流控制、安全监控等领域。传统的行人跟踪算法往往受到光照、遮挡等因素的干扰,难以实现准确跟踪。随着深度学习技术的发展,目标检测模型逐渐成为…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...