c++缺省参数与函数重载(超详细)

文章目录


前言

在本文章中,我们将要详细介绍一下C++c++缺省参数与函数重载的内容,具体包括定义,使用以及等缺省参数的概念,使用,分类,注意事项和函数重载中的一系列知识以及二者结合会产生什么样的效果相关的知识等。

一、缺省参数

1.缺省参数的概念与使用

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

在调用fun函数时,没有传参,则采用给形参赋的那个缺省值。

2.缺省参数的分类

🌝 🌝 .全缺省

函数的形参全部给缺省值。

🌝 🌝 .半缺省

函数的形参只有一部分给缺省值。

3.缺省参数注意事项

🎁🎁1.半缺省参数必须从右往左依次赋值,不能连续给。

🎁🎁2.声明和定义不能同时给缺省值,会产生调用歧义

我们一般建议声明给缺省值,定义正常写。

🎁🎁3.缺省值必须是全局变量或者常量

🎁🎁4.c语言不支持

二、函数重载

1.什莫事函数重载

函数重载:在同一作用域下,实现几个功能相似的同名函数。

2.函数重载的几种形式

🐯🐯参数类型不同

cpp 复制代码
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}

🐯🐯参数数量不同

cpp 复制代码
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}

🐯🐯参数顺序不同

cpp 复制代码
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}

仅仅对参数有要求,对返回值无要求

为什莫呢??

💓💓调用函数时,返回值并不重要,考虑的是函数名称和参数,返回值是调用处理数据之后考虑的事情

3.函数重载与缺省值的结合

函数重载与缺省值的结合是否可行呢??

这样四可以的,传参调用第一个f函数,虽然有缺省值,但是进行了传参,缺省值不进行使用。

看一下这段代码》》

这个进行了报错,在传参时我们发现调用第一个第二个都是合理的,这样两个就发生了冲突

函数重载与缺省值结合,不传参数调用有二义性

4.为什么c++支持函数重载??

🌟🌟项目一般都是由多个头文件和源文件构成。

比如a.cpp在调用b.cpp中的Add函数,编译后生成a.obj的目标文件,但是没有Add函数的地址。

因为Add函数是在b.cpp中定义的。函数地址在b.obj中。

🌟🌟编译器在链接时,看到a.obj在调用Add,但是没有Add函数的地址,就回到b.obj的符号表中去找Add的地址,然后连接到一起。

🌟🌟那么链接时,面对Add函数,链接接器会使用哪个名字去找呢?这里每个编译器都有自己的

函数名修饰规则

🌟🌟在Linux中g++采用(_Z+函数长度+函数名+类型首字母),window中也有自己独特的函数名修饰规则。只要参数不同,所形成的名字就会不同,这样就完成重载。

🌟🌟但是c语言采用本来的函数名取进行寻找,不加任何修饰,同名函数没办法区分,不支持重载

总结

以上就是今天要讲的内容,本文仅仅详细介绍了C++c++缺省参数与函数重载,希望对大家的学习有所帮助,仅供参考 如有错误请大佬指点我会尽快去改正 欢迎大家来评论~~ 😘 😘 😘 😘

相关推荐
环能jvav大师1 分钟前
基于R语言的统计分析基础:使用SQL语句操作数据集
开发语言·数据库·sql·数据分析·r语言·sqlite
吱吱鼠叔4 分钟前
MATLAB方程求解:1.线性方程组
开发语言·matlab·php
Antonio9159 分钟前
【CMake】使用CMake在Visual Studio内构建多文件夹工程
开发语言·c++·visual studio
LyaJpunov23 分钟前
C++中move和forword的区别
开发语言·c++
程序猿练习生27 分钟前
C++速通LeetCode中等第9题-合并区间
开发语言·c++·leetcode
z千鑫35 分钟前
【人工智能】如何利用AI轻松将java,c++等代码转换为Python语言?程序员必读
java·c++·人工智能·gpt·agent·ai编程·ai工具
一名路过的小码农37 分钟前
C/C++动态库函数导出 windows
c语言·开发语言·c++
m0_6312704040 分钟前
标准c语言(一)
c语言·开发语言·算法
万河归海42840 分钟前
C语言——二分法搜索数组中特定元素并返回下标
c语言·开发语言·数据结构·经验分享·笔记·算法·visualstudio
Messiah___1 小时前
【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
开发语言·php