【C++】入门二

下面我们说一下缺省参数,那么什么是缺省参数呢?就是说在定义或者声明函数时给形参赋予一个确定的值(也叫缺省值),那么当我们调用这个函数的时候,就可以不传值也可以传值,传值的话缺省值就没作用了,不传值的话就按缺省值去参与函数的运行,下面是一个简单的例子

#include<iostream>
using namespace std;
void Func(int a = 10, int b = 20) {
	cout << a + b << endl;
}
int main() {
	Func();//30
	Func(1, 2);//3
	return 0;
}

这就是一个简单的例子,我们在调用函数时既可以传值也可以不传值,函数的处理方式是不一样的
缺省函数可以分为全缺省和半缺省,顾名思义,全缺省就是形式参数全都有缺省值,我在调用函数的时候可以完全不传实参,就像上面的例子中的第一个调用一样;半缺省就是形参部分有缺省值,但谁有缺省值也是有规则的,规则是给缺省值要从右往左连续给,这也是为了减少传参时候的争议。在传参的时候就要给没缺省值的参数传参。就比如下面这样

#include<iostream>
using namespace std;
void Func(int a , int b = 20) {
	cout << a + b << endl;
}
int main() {
	Func(1);//21
	return 0;
}

另外还要提的一个点就是如果一个函数的声明和定义分离时,缺省值只能在声明给,不能在定义给

#include<iostream>
using namespace std;
void Func(int a=10, int b=20);
int main() {
	Func();
	return 0;
}
void Func(int a, int b ) {
	cout << a + b << endl;
}

下面说一下函数重载,我们知道,在C语言中是不支持函数重名的,这就导致我们在完成一些任务时很烦,所以呢,C++就引入了函数重载这个概念,意思就是允许函数重名的存在,但是它们的参数一定是不同的,这里的不同可以包括参数数量,参数类型等等,对于返回值没有要求,下面也是举一个函数重载的例子

#include<iostream>
using namespace std;
void Add(int a, int b) {
	cout << a + b << endl;
}
void Add(double a, double b) {
	cout << a + b << endl;
}
int main() {
	Add(1, 2);//3
	Add(1.1, 2.2);//3.3
	return 0;
}

在执行函数时,编译器会匹配参数的类型从而选到合适的函数,第一个就会默认调用第一个函数,因为它们的参数类型是匹配的,第二个同理。
不知道大家有没有想过,为什么C++支持函数重载呢?或者说本质上C++是通过什么去实现的呢?
我们知道,C语言或C++从我们写的代码到形成可执行程序是要经历几个步骤的,有预处理,编译,汇编(转换成二进制的机器码)和链接几个过程,在编译阶段,只要编译器能找到一个函数的声明就能通过,它不需要知道函数的地址(所以当我们在只写函数声明不写定义的时候,编译器报的是链接错误),
在这里插入图片描述

而是在链接这个阶段才需要知道函数的地址,那么怎么找到这个地址呢?C语言就是通过函数名,而C++还得加上函数的参数才能找到,在windows下也可以看见
下面是分别在C和C++下的报错情况
在这里插入图片描述
在这里插入图片描述
上面的C就只跟函数名有关系,下面的C++的中间的那群“乱码”就是C++下的对于函数名的修饰,在Linux环境下是这样的:_Z 函数名字符个数 函数名 参数首字母

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是Selenium?如何使用Selenium进行自动化测试?

什么是 Selenium&#xff1f; Selenium 是一种开源工具&#xff0c;用于在 Web 浏览器上执行自动化测试&#xff08;使用任何 Web 浏览器进行 Web 应用程序测试&#xff09;。   等等&#xff0c;先别激动&#xff0c;让我再次重申一下&#xff0c;Selenium 仅可以测试Web应用…

微服务实战系列之Token

前言 什么是“Token”&#xff1f; 它是服务端生成的一串字符串&#xff0c;以作客户端进行请求的一个令牌&#xff0c;当第一次登录后&#xff0c;服务器生成一个Token便返回给客户端&#xff1b;以后客户端只携带此Token请求数据即可。 简言之&#xff0c;Token其实就是用户身…

大型语言模型中的幻觉研究综述:原理、分类、挑战和未决问题11.15+11.16+11.17

大型语言模型中的幻觉研究综述&#xff1a;原理、分类、挑战和未决问题11.15 摘要1 引言2 定义2.1 LLM2.3 大语言模型中的幻觉 3 幻觉的原因3.1 数据的幻觉3.1.1 有缺陷的数据源3.1.2 较差的数据利用率3.1.3 摘要 3.2 来自训练的幻觉3.2.1训练前的幻觉3.2.2来自对齐的幻觉3.2.3…

如何在latex中高亮文本

导入soul 包可以使用高亮功能 在文本中插入 \hl{} 即可 导入color 包可以使用颜色功能 color 也可以替换成 xcolor \documentclass{report} \usepackage{xcolor,soul} \begin{document}\textcolor{red}{Text}\hl{Text} \hl{\textbf{Text}} \textbf{\textcolor{red}{\hl{Text}…

LeetCode题 338比特位计数,20有效的括号,415字符串相加

目录 338比特位计数 题目要求&#xff1a; 解题思路&#xff1a; 1、暴力穷举 代码&#xff1a; 2、N&&#xff08;N - 1&#xff09;公式求解 代码&#xff1a; 3、奇偶数性质解法&#xff1a; 代码&#xff1a; 20有效的括号 题目要求&#xff1a; 解题思路 …

CTF-PWN环境搭建手册

工欲善其事必先利其器&#xff0c;作为一名CTF的pwn手&#xff0c;一定要有自己的专用解题环境。本文将详细记录kali下的pwn解题环境的安装过程&#xff0c;B站也会配备配套视频。 安装前的准备工作 虚拟机环境 VMware WorkStation VM版本安装教程 1. 下载Kali的VM虚拟机文件…

Java内存区域速览

文章目录 JVM的组成加载字节码流程 运行时数据区-总览1. 程序计数器2. 虚拟机栈栈帧栈的运行原理 3. 本地方法栈4. 堆内存(Java Heap虚拟机对堆 的划分1. 年轻代&#xff08;Young Generation&#xff09;&#xff1a;2. 老年代&#xff08;Old Generation&#xff09;&#xf…

变长子网划分问题的二叉树解法

计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码&#xff0c;都是前缀编码的本质&#xff08;变长操作码的二叉树解法我还在琢磨中&#xff09; 【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点&#xff1a; 【例】现将一个IP网络划分成…

第七部分:Maven(项目管理工具)

目录 Maven简介 7.1&#xff1a;为什么学习Maven&#xff1f; 7.1.1、Maven是一个依赖管理工具 7.1.2&#xff1a;Maven是一个构建工具 7.1.3&#xff1a;结论 7.2&#xff1a;Maven介绍 7.3&#xff1a;Maven的优点 Maven安装和配置 7.4&#xff1a;安装教程及环境配置 …

阿里在职5年,聊聊测试工程师如何进阶(自动化、性能、测开)

功能测试&#xff08;所谓“点点点”&#xff09;在行业中基本能拿到15k左右的薪水&#xff0c;但是你不可能一直点。入行3年后&#xff0c;你需要拥有不止点点点的技能&#xff0c;否则出去面试&#xff0c;你会就会感受到竞争者给你带来的压力&#xff0c;你需要拿出更高级的…

【数据结构(二)】稀疏 sparsearray 数组(1)

文章目录 1. 稀疏数组的应用场景1.1. 一个实际的需求1.2. 基本介绍 2. 稀疏数组转换的思路分析3. 稀疏数组的代码实现3.1. 二维数组转稀疏数组3.2. 稀疏数组转二维数组 4. 课后练习 1. 稀疏数组的应用场景 1.1. 一个实际的需求 问题&#xff1a;     编写的五子棋程序中&…

LangGPT作者教你编写高质量提示词

CoT和ToT能够提升表现&#xff0c;但是会使得模型的使用变复杂。在对话的场景下容易消耗人的耐心&#xff1b;实际应用的场景下&#xff0c;比较消耗人的token。 还有一点需要说明的是&#xff0c;我们在写自己的prompt的时候&#xff0c;不应该盲目地追求和堆砌提示词技巧&am…

Linux快速下载Google Drive数据集

前言 我们做实验的时候&#xff0c;经常需要下各种各样的数据集&#xff0c;但是这些数据集往往都在Google Drive上&#xff0c;这需要科学上网才能访问。同时&#xff0c;就算在自己电脑上能够访问&#xff0c;但是数据集往往是要下在实验室的服务器上的&#xff0c;而通常这…

大数据Doris(二十五):数据导入演示和其他导入案例

文章目录 数据导入演示和其他导入案例 一、数据导入演示

flink的window和windowAll的区别

背景 在flink的窗口函数运用中&#xff0c;window和windowAll方法总是会引起混淆&#xff0c;特别是结合上GlobalWindow的组合时&#xff0c;更是如此&#xff0c;本文就来梳理下他们的区别和常见用法 window和windowAll的区别 window是KeyStream数据流的方法&#xff0c;其…

python使用selenium webDriver时 报错

可能原因和解决&#xff1a; 1. python 解释器 ----> 设置 2. 浏览器版本 与 浏览器驱动版本不一致 ----> 安装同一版本的 (下载chromedriver | 谷歌驱动更高版本的测试版) 参考&#xff1a;Python使用Selenium WebDriver的入门介绍及安装教程-CSDN博客 Selenium安…

【入门篇】1.2 Redis 客户端之 Jedis 详解和示例

文章目录 1. 简介2. Jedis的依赖下载Jedis导入Jedis jar包配置Redis服务器的地址和端口 3. Jedis 的基本操作连接 Redis 服务器设置和获取字符串类型的键值对判断键是否存在删除键设置键的过期时间 4. Jedis 的数据类型操作字符串类型列表类型集合类型哈希类型有序集合类型 5. …

腾讯云优惠服务器有哪些?腾讯云值得买的优惠服务器推荐

互联网世界中&#xff0c;每个人都是主角。而要想在这个世界中玩得更精彩&#xff0c;一个稳定可靠的服务器就显得尤为重要了。今天&#xff0c;我们就来聊聊广受欢迎的腾讯云优惠服务器吧&#xff01; 首先&#xff0c;“轻量级”服务器是首选。对于一些小型网站、Web应用程序…

11月最新版付费进群源码自动定位+开源

感觉这个和前几天发布的付费进群差不多。 但有部分地方不一样&#xff0c;也是有什么分销分站后台&#xff0c;看见就头大。 没测试具体功能&#xff0c;可以搭建出来&#xff0c;D盾也未检测到加密文件 更多源码请到www.baicxx.com

接口自动化测试实战:JMeter+Ant+Jenkins+钉钉机器人群通知完美结合

前言 一、本地JAVA环境安装配置,安装JAVA8和JAVA17 二、安装和配置Jmeter 三、安装和配置ant 四、jmeter + ant配置 五、jenkins安装和配置持续构建项目 六、jenkins配置流程 前言 搭建jmeter+ant+jenkins环境有些前提条件,那就是要先配置好java环境,本地java环境…