auto->decltype

auto

c++11标准才有的,c++14丰富了很多这个相关的用法

声明变量别用auto,auto是让编辑器来自己推断,很影响运行效率

#include<iostream>
using namespace std;auto ave(int a, int b) {return a + b;
}int main() {cout << typeid(ave(1, 2)).name()<<endl;return 0;
}

auto注意事项

auto保留不了const属性

auto优先推断为值而不是引用

auto的拖尾函数

当我们需要强制类型转换

decltype

int a = 10, b = 20;
cout << typeid(decltype(a+b)).name()<<endl;

decltype()可以保留const和引用

对于()里面没有一次运算的情况,int就转int,int&引用就转int&引用

引用对于()里面有至少一次运算的情况来说

1.看有没有固定地址,就是说是不是左值

decltype(a+b)是没有固定地址的,是暂存在寄存器中的,所有这个类型直接为int(就算为int& + int&)

int *pa{&a};
decltype(*pa) x = a;//经历了取值运算符,同时为左值,所以x为int&引用类型

//若里面是数组也行
pa[0];
pa[5]; //这也算经历了运算
//但是*pa + 1不行,没有固定内存了

decltype相较于auto的优点

然后()里面是函数

decltype(ave(100,200))编译器不会运行这个函数

auto->decltype

如果有时候自己搞不清楚函数的返回值

下面是c++11的写法

因为(a+b)/2没有固定地址所以是int类型

拖尾后面的表达式尽量和return里面的一样(防出错)

下面是c++14的写法

#include<iostream>
using namespace std;decltype(auto) ave(int a, int b)
{return ((a + b) / 2);
}int main() {decltype(ave(10, 20));return 0;
}

a++和++a的decltype()的区别

a++等价于a,a++是要当a被用过(这里面要被decltype用过)才++,所以先decltype,所以直接为int类型

++a(等价于a = a+1,这个表达的值就是a+1)相当于经历了运算,又有&a这个固定地址,所以为int&引用类型

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

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

相关文章

Colab/PyTorch - 003 Transfer Learning For Image Classification

Colab/PyTorch - 003 Transfer Learning For Image Classification 1. 源由2. 迁移学习(ResNet50)2.1 数据集准备2.2 数据增强2.3 数据加载2.4 迁移学习2.5 数据集训练&验证2.6 模型推理 3. 总结4. 参考资料 1. 源由 迁移学习已经彻底改变了 PyTorch 中处理图像分类的方式…

基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 粒子群优化算法基础 4.2 PV系统及其最大功率点跟踪 4.3 PSO在PV MPPT中的应用 5.完整工程文件 1.课题概述 基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真。通过PSO粒子群优化进行最大功率…

电影院购票管理系统

文章目录 电影院购票管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 电影院购票管理系统 一、项目演示 电影院售票管理系统 二、项目介绍 基于springbootvue的前后端分离电影院购票管理…

开发利器 - docker 安装运行 mysql

本文选择安装的mysql版本为5.7 &#xff0c;安装环境 mac 1、查看镜像是否存在 docker search mysql:5.7 2、拉取镜像 docker pull mysql:5.7 3、运行镜像 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot1234 -d mysql:5.7 --name&#xff1a;指定容器…

淘宝买的知识付费系统,在线教育电销怎么做你知道吗?

在线教育行业的销售推销的产品其实就是课程&#xff0c;只不过变成了一种虚拟产品&#xff0c;在线教育的销售一般有课程销售、平台搭建销售&#xff0c;还有就是老师其实也是一种销售&#xff0c;这几个里面最容易上手的就是课程销售了&#xff0c;课程销售一般采用电话销售方…

【UniApp踩坑记录】在subNvue页面中使用Map,添加marker后不显示

一、背景 最近将一个小程序项目转化为 APP&#xff0c;想着正好体验一下 uniapp 宣称的一套代码&#xff0c;多端运行理念&#xff0c;于是运行到了真机环境。好消息是运行成功了&#xff0c;坏消息是部分样式不完善&#xff0c;部分功能失效。跨端成功了&#xff0c;但没完全…

00 深度学习 PyTorch框架介绍

PyTorch框架介绍 什么是PyTorch&#xff1f; PyTorch 是一个开源的深度学习框架&#xff0c;由 Facebook 的人工智能研究团队开发&#xff0c;提供了强大的 GPU 加速的张量计算库和基于 autograd 系统的深度神经网络&#xff08;DNN&#xff09;库。它的设计强调简单性和直观…

4---自动化构建代码(逻辑梳理,轻松理解)

一、需求引出&#xff1a; 在使用编译器编译代码时&#xff0c;无论我们在一个项目中写了多少个文件(包括头文件、源文件)&#xff0c;我们都可以一键完成编译&#xff0c;编译器会自动处理各个文件之间的包含&#xff0c;调用关系。但是在Linux中&#xff0c;我们在一个目录下…

CSS 定位

为什么需要浮动? 我们在访问一些网站的时候, 经常会遇到如下这种情况, 有一个组件, 一直固定在屏幕的固定位置, 无论你如何滑动这个网页, 就会固定在哪里, 如下, 下图是王者荣耀的一个官网: 要实现上面的效果, 标准流或者是浮动是无法快速实现的, 此时就需要使用定位来实现.…

复习用到知识(asp.net)

public partial class teacheDetails : System.Web.UI.Page { // 页面加载时触发的事件 protected void Page_Load(object sender, EventArgs e) { // 检查是否是首次加载页面&#xff08;非回发&#xff09; if (!IsPostBack) { // 检查URL查询字符串中是否包含"…

H3C DHCP快速配置指南

1 配置DHCP服务器动态分配IPv4地址 1.1 简介 本案例介绍配置接口工作在DHCP服务器模式&#xff0c;实现动态分配IPv4地址的方法。 1.2 组网需求 如1.2 图1所示&#xff0c;公司将交换机做为核心交换机&#xff0c;现在需要在核心交换机上划分3个VLAN网段&#xff0c;Ho…

数据结构与算法学习笔记三---循环队列的表示和实现(C++)

目录 前言 1.为什么要使用循环队列 2.队列的顺序存储方式的实现 1.定义 2.队列初始化 3.销毁 4.清空队列 5.队列是否为空 6.队列长度 7.队头 8.入队 9.出队 10.遍历队列 11.完整代码 3.参考资料 前言 这篇文章介绍循环队列的表示和用法。 1.为什么要使用循环队…

深入理解Linux下的网络监控工具:iftop

目录标题 1. 什么是iftop?2. 安装iftop在Debian/Ubuntu上安装在CentOS/RHEL上安装在其他Linux发行版上 3. 使用iftop监控网络流量命令行选项界面说明交互命令 4. 相关参数及说明 在维护和监控Linux服务器时&#xff0c;了解网络流量的细节非常重要。网络监控可以帮助我们诊断延…

20240511金融读报:信贷风控卫星遥感系统实例蓝色金融

1、兴业银行信贷风控方面&#xff0c;卫星遥感应用系统&#xff08;看其他人吹了那么久&#xff0c;终于有个出来讲细节了&#xff09;&#xff1a;适用范围&#xff08;农业种植&#xff08;面积、长势、产量、市场价格、病虫害风险&#xff09;、林业&#xff08;面积、砍伐、…

远程服务器监控工具Navicat Monitor全新发布v3.0 - 支持PostgreSQL用户

Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 Percona Server&#xff0c;并与 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure 和阿里云等云数据库兼容。Nav…

C# 统计代码运行时长

using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespace Sci {/// <summary>/// 统计代码…

AlmaLinux 文件拷贝 cp命令用法示例

AlmaLinux 文件拷贝 在Linux系统中&#xff0c;文件复制可以使用cp命令。以下是一些基本的cp命令用法示例&#xff1a; 复制文件到目标目录&#xff1a; cp source.txt /destination/directory/ 复制多个文件到目标目录&#xff1a; cp file1.txt file2.txt /destination/d…

网易灵犀办公企业邮箱的IMAP和POP3服务器地址

IMAP 电子邮件地址&#xff1a;saleyouxiang.com 帐户类型&#xff1a;IMAP 接收邮件服务器&#xff1a;imaphz.qiye.163.com 发送邮件服务器&#xff1a;smtphz.qiye.163.com 用户名&#xff1a;saleyouxiang.comPOP3 电子邮件地址&#xff1a;saleyouxiang.com 帐户类型&…

进程间通信:连接不同程序世界的桥梁

目录 一、进程间通信的重要性 二、常见的进程间通信方式 三、进程间通信的目的 四、进程间通信的本质 在计算机编程的领域中&#xff0c;进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是一个至关重要的概念。当我们在操作系统中运行多个程…

YOLOv5-7.0改进(四)添加EMA注意力机制

前言 关于网络中注意力机制的改进有很多种&#xff0c;本篇内容从EMA注意力机制开始&#xff01; 往期回顾 YOLOv5-7.0改进&#xff08;一&#xff09;MobileNetv3替换主干网络 YOLOv5-7.0改进&#xff08;二&#xff09;BiFPN替换Neck网络 YOLOv5-7.0改进&#xff08;三&…