C++知识--函数重载和缺省

一.缺省

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

实际上缺省是分为以下几种情况的:

1.全缺省参数

#include <iostream>//全缺省
void Func(int a=10, int b=20, int c=30)
{std::cout << "a = " << a << std::endl;std::cout << "b = " << b << std::endl;std::cout << "c = " << c << std::endl;}
int main()
{Func(10,4,6); // 传参时,使用指定的实参Func();// 没有传参时,使用参数的默认值return 0;
}

2.半缺省参数

半缺省参数必须从右往左依次来给出,不能间隔着给

#include <iostream>//半缺省,并不是缺省一般哈
void Func(int a, int b = 10, int c = 30)
{std::cout << "a = " << a << std::endl;std::cout << "b = " << b << std::endl;std::cout << "c = " << c << std::endl;
}
int main()
{Func(2);return 0;
}

缺省有以下几点需要大家注意:

1.缺省参数不能在函数声明和定义中同时出现,原因:如果声明与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省值。所以我们通常将缺省放在声明位置。
2. 缺省值必须是常量或者全局变量
3. C语言不支持(编译器不支持)

二.函数重载

定义:

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题

 

但是需要注意的是,如果我们两个函数只是返回类型不同的话,是不算函数重载的。

函数重载主要分为以下三种情况:

1.函数参数不同:

//函数参数不同
void Func(int a, int b)
{;
}
void Func(double a, int b)
{;
}
int main()
{return 0;
}

2.函数参数个数不同:

//函数参数个数不同
double Func(int a, int b)
{;
}
int Func(int a, int b, int c)
{;
}

3.函数参数顺序不同:

//函数参数顺序不同
void Func(char a, int b)
{;
}
void Func(int a, char b)
{;
}


为什么C++支持函数重载,而C语言不支持函数重载呢?
在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接

 

我们就简单讲一下不同阶段会出现什么情况?

预编译阶段:展开头文件/宏替换/去掉注释/条件编译

编译阶段:检查语法错误,然后将代码转换为汇编代码

汇编阶段:将汇编代码转换为机器语言--二进制程序

链接阶段:将多个文件合并到一起

实际上我们如何查找函数是这样的:

我们在C语言中是通过查找函数名的地址然后访址知道的,但是在C++中我们规定将参数放到要查找中,这样函数参数不同就可以通过查找实现了,当然这个不同的编译器实现并不相同,大家可以自行了解。

补充:

在linux下,采用g++编译完成后,函数名字的修饰发生改变,编译器将函数参数类型信息添加到修改后的名字中
 

最后,寒假加油吧!

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

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

相关文章

IS-IS:01 ISIS基本配置

这是实验拓扑&#xff0c;下面是基本配置&#xff1a; R1: sys sysname R1 user-interface console 0 idle-timeout 0 0 int loop 0 ip add 1.1.1.1 24 int g0/0/0 ip add 192.168.12.1 24 qR2: sys sysname R2 user-interface console 0 idle-timeout 0 0 int loop 0 ip add …

C++提高编程——模板

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…

samba服务搭建,并将共享目录映射到windows

系统版本&#xff1a;centos7 1、centos 安装samba yum -y install samba 2、查看安装信息 rpm -qa |grep samba 3、设置开机自启动 systemctl enable smb.service systemctl enable nmb.service 4、设置samba服务器配置文件 sudo vi /etc/samba/smb.conf 注意&#…

CentOS 系统创建网卡bond0

很多时候在机房运维的过程中&#xff0c;我们会遇到客户要求的建立网卡光口的bond0设置&#xff0c;通俗点说就是将两个光口合并为一个口进行链接设置。创建这个设置是有两种设置&#xff0c;一是在安装系统的过程中对bond0进行创建设置&#xff0c;另一种就是通过系统里面对网…

Mac使用adb调试安卓手机

0x00 背景 最近windows电脑休息&#xff0c;用mac办公比较多&#xff0c;手机用时间长了&#xff0c;不太灵光&#xff0c;准备修理一番。于是要用mac调试下android手机。配置略显麻烦&#xff0c;网上的步骤多参差不齐。估计是入门步骤&#xff0c;大佬们也懒得写的太细。于是…

14.1.1 ASP简介

14.1.1 ASP简介 ASP 的全称是Active Server Pages&#xff0c;是由鼎鼎大名的Microsoft(微软)公司开发的服务器端语言。有强大的微软做后盾&#xff0c;ASP在众多的服务器端语言中长久不衰&#xff0c;至今仍有成千上万的网站在使用ASP语言。ASP 内置于IIS中&#xff0c;只要安…

【趣味题-07】20240121他的第一周工资(精准推测工资)

背景需求 设计过程&#xff1a; AI写了很多的答案&#xff0c;但是都不正确 于是我去查看了网上的正确答案——47.41美元 此外&#xff0c;题目的0.99涉及了浮点数&#xff0c;非整数&#xff0c;无法range遍历 最后终于有一个答案正确的代码 通过反复测试&#xff0c;终于写出…

详细版Git的下载安装与配置(Windows)

一、git的下载 Git是一个非常好用的版本控制工具。下载地址如下&#xff1a;Git - Downloads。建议使用国内浏览器下载&#xff0c;因为不用翻墙&#xff0c;速度快。 当你用浏览器去访问上面的地址后&#xff0c;下载页面会自动识别你的电脑系统&#xff0c;如下 点击&#…

NVMe TCG安全数据存储简介

NVMe&#xff08;非易失性内存主机控制器接口规范&#xff09;与TCG&#xff08;可信计算组&#xff09;的集成主要体现在数据安全、固件验证和硬件信任根等方面&#xff0c;以确保存储设备的数据保护能力和安全性。 TCG Opal定义了一套针对自加密硬盘&#xff08;SED, Self-En…

python操作word-样式

字体 引入 from docx.shared import Pt, Inches, RGBColor 加粗 # 加粗1 p1.add_run(这是内容1.1_加粗\n).font.bold True # 加粗2 p1 doc1.add_paragraph(这是段落1&#xff1a;\n) p1.runs[0].font.bold True 斜体 p1.add_run(这是内容1.2_斜体\n).font.italic True …

python蓝桥杯备考——字符串小知识点

python蓝桥杯备考——字符串小知识点 一、 问题解释&#xff1a; .join(str(k) for k in sorted(set(l)))含义和用法二、练习题目&#xff1a;完数的判断补充知识点&#xff1a; 一、 问题解释&#xff1a;’ .join(str(k) for k in sorted(set(l)))含义和用法 print(i, its f…

找不到msvcr100dll或msvcr100dll丢失怎么办,5种靠谱的解决方法分享

MSVCR100.dll文件的丢失可能会引发一系列系统运行和应用程序功能上的问题。作为Microsoft Visual C运行库中的一个关键动态链接库文件&#xff0c;它的缺失会导致依赖于此文件的软件无法正常启动或执行预期功能。具体表现可能包括但不限于&#xff1a;应用程序崩溃、闪退&#…

Python基础之异常处理

程序在运行过程中&#xff0c;难免会遇到错误&#xff0c;有的是编写人员疏忽造成的语法错误&#xff0c;有的是程序内部隐含逻辑问题造成的数据错误&#xff0c;还有的是程序运行时与系统的规则冲突造成的系统错误&#xff0c;等等。如果出错就不会执行出错语句后面的代码&…

Ubutu下的Shell操作

前言 在学习Ubuntu系统时&#xff0c;Shell操作是必不可少的知识。本篇文章是记录我学习Linux系统时&#xff0c;Ubutu下的Shell操作&#xff0c;希望我的分享对大家有所帮助&#xff01; 目录 前言 一、什么时是Shell 二、Shell的基本操作 三、常用的Shell命令 1、目录信…

GIS项目实战06:超详细Node.js安装及系统环境配置

简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境&#xff0c;基于 Google 的 V8 引擎&#xff0c;V8 引擎执行 Javascript 的速度非常快&#xff0c;性能…

一区优化直接写:KOA-CNN-BiLSTM-Attention开普勒优化卷积、长短期记忆网络融合注意力机制的多变量回归预测程序!

适用平台&#xff1a;Matlab 2023版及以上 KOA开普勒优化算法&#xff0c;于2023年5月发表在SCI、中科院1区Top顶级期刊《Knowledge-Based Systems》上。 该算法提出时间很短&#xff0c;目前还没有套用这个算法的文献。 同样的&#xff0c;我们利用该新鲜出炉的算法对我们的…

【好用的AI工具Kimi Chat】帮助提高面试效率

一、背景 年前裁员潮&#xff0c;不少人离职找工作&#xff0c;以及年后金三银四&#xff0c;也是求职高峰期。如何更高效的复习技术知识&#xff0c;以及特别是横纵向比对有总结性的问题。本文以面试【测试开发】的岗位为例&#xff0c;对面试题进行拓展&#xff0c;让AI帮助…

从 Vscode 中远程连接 WSL 服务器:可以本地操作虚拟机

从 Vscode 中远程连接 WSL 服务器&#xff1a;可以本地操作虚拟机 1.下载 Vscode Visual Studio Code - Code Editing. Redefined 2.搜索框中输入>wsl&#xff0c;点击 WSL&#xff1a;Connect to WSL using Distro... 3.点击下载好的Ubuntu&#xff0c;当左下角出现图片同…

U-Boot 中使用 nfs 命令加载文件报错指南

目录 问题一问题描述错误原因解决方案 问题二问题描述解决方案 更多内容 在嵌入式 Linux 开发中&#xff0c;我们经常使用 nfs 命令加载服务端的共享文件或者挂载文件系统。关于服务端 NFS 服务的搭建可以参考基于 NFS 的文件共享实现。 U-Boot 也支持了 nfs 命令&#xff0c;…

RabbitMQ数据隔离

1、新建用户 2、登录用户&#xff0c;设置虚拟主机 登录用户只能操作自己的虚拟主机&#xff0c;交换机等&#xff0c;不能操作其他人的&#xff01;&#xff01;&#xff01;