C++ 泛编程—— 自动推导类型 auto

C++ 自动推导类型 auto

  • 自动推导类型
  • 函数模板
  • 类模板

C++泛编程,也叫通用编程。包括三方面内容: 自动推导类型函数模板类模板

自动推导类型

C++11中,赋予了auto全新的含义,不再用于修饰变量,而是作为一个类型指示符指示编译器在编译时推导auto声明的变量的数据类型。
语法:auto 变量名 = 初始值

#include <iostream>using namespace std;int main() {int n1 = 123; cout << "n1 = " << n1 << endl;auto n2 = 123; cout << "n2 = " << n2 << endl;double d1 = 123.456; cout << "d1 = " << d1 << endl;auto d2 = 123.456; cout << "d2 = " << d2 << endl;string s1 = "Hello, World!"; cout << "s1 = " << s1 << endl;auto s2 = "Hello, World!"; cout << "s2 = " << s2 << endl;return 0;
}

编译器会根据等号右边的数据,自动推导出变量的数据类型。编译运行结果如下:

n1 = 123
n2 = 123
d1 = 123.456
d2 = 123.456
s1 = Hello, World!
s2 = Hello, World!

注意

  • auto声明的变量必须在定义时初始化。没有定义的话,那什么来推导?
  • 初始化的右值可以是具体的数值,也可以是表达式函数返回值等。
  • auto不能作为函数的形参类型。
  • auto不能直接声明数组。
  • auto不能定义类的非静态成员变量。
#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。double func(double n1, const char* n2, float n3, short n4, long n5)
{cout << "n1 = " << n1 << ", n2 = " << n2 << ", n3 = " << n3 << ", n4 = " << n4 << ", n5 = " << n5 << endl;return 1.2345;
}int main()
{// 声明函数指针 方法1double (*pf_1)( double , const char* , float , short , long );    // 声明函数指针pf。pf_1 = func; // 函数指针pf指向func函数pf_1(1.2345, "abcd", 3, 4, 5);// 声明函数指针 方法2auto pf_2 = func;pf_2(2.222, "aaaaa", 222, 222, 222);
}

编译运行结果如下:

n1 = 1.2345, n2 = abcd, n3 = 3, n4 = 4, n5 = 5
n1 = 2.222, n2 = aaaaa, n3 = 222, n4 = 222, n5 = 222

不要滥用autoauto在编程时真正的用途如下:

  • 代替冗长复杂的变量声明(两种方法声明函数指针,方法2代码少)
  • 在模板中,用于声明依赖模板参数的变量。
  • 函数模板依赖模板参数的返回值
  • 用于lambda表达式中

函数模板

链接:C++ 泛编程 —— 函数模版(上)
链接:C++ 泛编程 —— 函数模版(中)
链接:C++ 泛编程 —— 函数模版(下)

类模板

链接:C++ 泛编程 —— 类模版(上)
未完待续

感谢浏览,一起学习!

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

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

相关文章

【数据分享】2014-2024年我国AOI兴趣面数据(免费获取/来源于OSM地图)

AOI是Area of Interest的简称&#xff0c;顾名思义&#xff0c;指的是互联网电子地图中的兴趣面&#xff0c;主要用于在地图中表达区域状的地理实体&#xff0c;如一个居民小区、一所大学、一个产业园区、一个综合商场、一个医院、一个景区的矢量边界。对于AOI数据&#xff0c;…

题解 - 找子序列(2024.12上海月赛丙组T4)

题目描述 Dave 有一个长度为 n 的非负整数序列 a1-n, 和一个非负整数 m 。 他希望知道是否有一个 a 的非空子序列&#xff0c;使得子序列中所有元素的按位与(bitwise AND)结果为 m。 换言之&#xff0c;他想知道是否存在一个下标序列 i1-k(k ≥ 1),满足 1 ≤ i1 < i2 < …

R学习——因子

目录 1 定义因子&#xff08;factor函数&#xff09; 2因子的作用 一个数据集中的 只需要考虑可以用哪个数据来进行分类就可以了&#xff0c;可以用来分类就可以作为因子。 Cy1这个因子对应的水平level是4 6 8&#xff1a; 1 定义因子&#xff08;factor函数&#xff09; 要…

Zemax 中的 LED 阵列模型

LED 阵列的光学特性 LED 阵列由多个发光二极管 &#xff08;LED&#xff09; 组成&#xff0c;这些二极管以特定模式或配置排列&#xff0c;以实现均匀照明、更高强度或特定照明特性。这些阵列广泛用于显示器、照明系统、光通信和传感等应用。 LED 阵列的光学特性对于了解它如…

如何解决samba服务器共享文件夹不能粘贴文件

sudo vim /etc/samba/smb.conf在samba的配置文件中增加一个选项 writable yes重启Samba服务以使更改生效&#xff1a; sudo service smbd restart

数据分析特征标准化方法及其Python实现

数据分析特征标准化方法及其Python实现 1、概述 在数据分析中,对特征进行标准化主要是: 1、消除量纲影响 不同特征可能具有不同的量纲和数量级。 例如,一个特征可能是以米为单位的长度,而另一个特征可能是以秒为单位的时间。直接使用这些具有不同量纲的原始数据进行分析…

python之使用SFTP将Windows文件上传到Linux

环境 Python-3.8 Windows 64位安装必要的库 首先&#xff0c;确保已经安装了以下库&#xff1a; #有网安装方式&#xff1a; pip install paramiko #离线安装方式&#xff1a; pip install bcrypt-3.1.7-cp38-cp38-win_amd64.whl pip install cryptography-2.9-cp38-cp38-wi…

【C++游记】string的使用和模拟实现

枫の个人主页 你不能改变过去&#xff0c;但你可以改变未来 算法/C/数据结构/C Hello&#xff0c;这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕&#xff0c;我们继续来学习C的内容呀。C是接近底层有比较经典的语言&#xff0c;因此学习起来注定枯燥无味&#xf…

切换至低特权级

x86权限简介 x86芯片支持四种特权级&#xff1a;第0级权限最高&#xff0c;用于运行操作系统&#xff1a;第3级权限最低&#xff0c;用于运行应用程序&#xff1b;其它两级用于运行操作系统服务&#xff08;可选&#xff09;。 2&#xff0c;3等级用的少 权限检查时&#xff0…

游戏如何应对模拟器作弊

模拟器是指能在PC端模拟出安卓手机系统的软件&#xff0c;市面上比较常见的安卓模拟器有&#xff1a;雷电模拟器、MuMu模拟器、夜神模拟器等。 市面上常见的模拟器 模拟器既可以节省手机内存空间&#xff0c;避免长时间玩游戏手机发烫发热的尴尬&#xff0c;也可以用键盘鼠标对…

Ubuntu环境下搭建区块链FISCO BCOS节点和WeBASE

说明: 1.搭建的是webase-deploy并不是webase-front 2.根据本文档由于ubuntu版本的不同,可能会造成一些小的问题发生,自行解决 如:java环境变量;数据库权限、密码等。 (一)搭链 参考文档:WeBASE管理平台 — FISCO BCOS 2.0 v2.11.0 文档 1.安装依赖: sudo apt i…

22. 正则表达式

一、概述 正则表达式&#xff08;regular expression&#xff09;又称 规则表达式&#xff0c;是一种文本模式&#xff08;pattern&#xff09;。正则表达式使用一个字符串来描述、匹配具有相同规格的字符串&#xff0c;通常被用来检索、替换那些符合某个模式&#xff08;规则&…

我们来对接蓝凌OA --报文格式

题记 数智化办公专家、国家高新技术企业、知识管理国家标准制定者、信创供应商10强…等等&#xff0c;这些和咱们有关系吗&#xff01;&#xff01;不好意思&#xff0c;走错片场了&#xff0c;刚和项目经理在甲方那边吹牛B想想刚刚的大饼&#xff0c;看看支付宝余额&#xff…

GFPS扩展技术原理(一)消息流

消息流作用 Google fast pair service要求Provider提供一个额外得通道以便seeker寻求建立连接&#xff0c;连接建立后&#xff0c;Seeker就可以向Provider发送一串数据流&#xff0c;这样做的目的是为了支持GFPS Extension&#xff0c;也就是扩展的GFPS&#xff0c;主要涉及一…

海康萤石摄像机接入EasyNVR流程:开启RTSP-》萤石视频添加到EasyNVR-》未来支持海康SDK协议添加到EasyNVR

EasyNVR目前支持GB28181、RTSP、ONVIF、RTMP&#xff08;推流&#xff09;这几种协议接入&#xff0c;目前正在增加海康HIKSDK、大华DHSDK等几种SDK的接入&#xff0c;我们今天就介绍一下萤石摄像机怎么通过RTSP接入到EasyNVR。 第一步&#xff1a;萤石摄像机开启 萤石设备默…

【EthIf-03】 EthernetInterface软件栈的文件组织结构

上图为《AUTOSAR_SWS_EthernetInterface【v2.2.0 】》给出的EthernetInterface软件栈的文件组织结构,本文主要关注arccore代码中已存在的文件的功能和作用,不知道的小伙伴可以查看🔗EthIf的文件结构中的src和inc目录下的文件有哪些: 1. 文件结构 1.1 EthIf_Cbk.h 头文…

LeetCode hot100-69-N

https://leetcode.cn/problems/valid-parentheses/description/?envTypestudy-plan-v2&envIdtop-100-liked 20. 有效的括号 已解答 简单 相关标签 相关企业 提示 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#x…

Docker 中使用 PHP 通过 Canal 同步 Mysql 数据到 ElasticSearch

一、Mysql 的安装和配置 1.使用 docker 安装 mysql&#xff0c;并且映射端口和 root 账号的密码 # 获取镜像 docker pull mysql:8.0.40-debian# 查看镜像是否下载成功 docker images# 运行msyql镜像 docker run -d -p 3388:3306 --name super-mysql -e MYSQL_ROOT_PASSWORD12…

【深度学习量化交易6】优化改造基于miniQMT的量化交易软件,已开放下载~(已完成数据下载、数据清洗、可视化模块)

我是Mr.看海&#xff0c;我在尝试用信号处理的知识积累和思考方式做量化交易&#xff0c;应用深度学习和AI实现 股票自动交易&#xff0c;目的是实现财务自由~ 目前我正在开发基于miniQMT的量化交易软件。 之前写到&#xff0c;目前我已经完成了数据下载、数据清洗和数据可视化…

【开发情景】数据库存的JSON数据转为Map,key值是中文,转成英文,转为json数据传给前端

数据库存的JSON数据转为Map&#xff0c;key值是中文&#xff0c;转成英文&#xff0c;转为json数据传给前端 方法一&#xff08;最详细&#xff09;&#xff1a; 一、解析JSON数据&#xff1a;使用 JSON 库将字符串解析为 Map。 1、从数据库读取 JSON 字符串&#xff1a;2、使…