千家信息网

C++中默认参数与函数重载的方法

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,这篇"C++中默认参数与函数重载的方法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2024年11月22日C++中默认参数与函数重载的方法

这篇"C++中默认参数与函数重载的方法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C++中默认参数与函数重载的方法"文章吧。

一、默认参数

在C++中,可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数。

默认参数的语法与使用:

(1)在函数声明或定义时,直接对参数赋值。这就是默认参数;
(2)在函数调用时,省略部分或全部参数。这时可以用默认参数来代替。

注意:

(1)默认参数只可在函数声明中设定一次。只有在没有函数声明时,才可以在函数定义中设定。(#add ,此句意为存在函数声明和定义两部分的时候。验证表明有这个限制,可以随便,但出于规范,在声明中指定)
(2)如果一个参数设定了缺省值时,其右边的参数都要有缺省值。(#add 这是定义时,类的成员函数的参数表在声明时默认参数位于参数表右部, 使用时该怎样待总结)
如:int mal(int a, int b=3, int c=6, int d=8) 正确,按从右到左顺序设定默认值。
int mal(int a=6, int b=3, int c=5, int d) 错误,未按照从右到左设定默认值。c设定缺省值了,而其右边的d没有缺省值。
(3)默认参数调用时,则遵循参数调用顺序,自左到右逐个调用。这一点要与第(2)分清楚,不要混淆。(#add 神马意思啊? 暂理解为两个默认参数之间的参数必须赋缺省值, 错,意为调用函数时,从左至右第一个实参即为第一个形参的实参,依此类推)
如:

void mal(int a, int b=3, int c=5); //默认参数  mal(3, 8, 9 );//调用时有指定参数,则不使用默认参数   mal(3, 5);     //调用时只指定两个参数,按从左到右顺序调用,相当于mal(3,5,5);mal(3);     //调用时只指定1个参数,按从左到右顺序调用,相当于mal(5,3,5);mal( );      //错误,因为a没有默认值mal(3, , 9)      //错误,应按从左到右顺序逐个调用再如: void mal(int a=8, int b=3, int c=5); //默认参数mal( ); //正确,调用所有默认参数,相当于mal(8,3,5);

(4)默认值可以是全局变量、全局常量,甚至是一个函数。但不可以是局部变量。因为默认参数的调用是在编译时确定的,而局部变量位置与默认值在编译时无法确定。

二、函数重载

在相同的声明域中,函数名相同,而参数表不同。通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数用法。

参数表的不同表现为:

1、参数类型不同;
2、参数个数不同;

特别注意:返回类型不同不可以作为函数重载的标识。

函数重载的注意事项

1、函数的形参必须不同,或者个数不同,或者类型不同,不能够只依靠函数的返回值类型不同或形参变量名不同来实现函数重载。
2、不要将不同功能的函数定义为重载函数,以免出现对调用结果的误解。如:

int add(int x,int y){return x+y;}float add(float x,float y){return x-y;}

重载函数与默认参数重叠导致的二义性问题:

func(int); //重载函数1,只有1个参数,无默认参数
func(int, int =4); //重载函数2,有2个参数,有1个默认参数
func(int a=3, int b=4, int c=6); //重载函数3,有3个参数,有3个默认参数
fucn(float a=3.0, float b=4.0 float c=5.0); //重载函数4,有3个参数,有3个默认参数
fucn(float a=3.0, float b=4.0 float c=5.0 float d=7.9 ); //重载函数5,有4个参数,有4个默认参数

func(2); //可调用前3个函数,出现二义性
func(2.0); //可调用后2个函数,出现二义性

所以当重载函数与默认参数共同使用时,要注意出现二义性问题。

以上就是关于"C++中默认参数与函数重载的方法"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

参数 函数 不同 内容 参数表 顺序 C++ 二义性 变量 类型 形参 方法 错误 相同 两个 个数 全局 只有 右边 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 青浦区智能网络技术创新服务 网络安全党小组发言 数据库中的ole对象是什么意思 云南昆明软件开发公司 互联网时代科技的进步 软件开发团队怎么操作 创建数据库时设置编码格式 公司资料可以存放在服务器上吗 网络安全实训模板 数据库连接网页技术 春季高考网络技术考试大纲 男爵领域的服务器在哪里 国家对软件开发专业的支持 郑州优点网络技术有限公司 数据库中数据可以是备注型么 微软sql数据库价格 地球物理软件开发考研 阿里云云服务器能增加ip吗 网络安全与监察专业 特斯拉充电桩无法连接服务器 eclipse开发数据库 施乐c75背包服务器如何校色 网络安全提供工具 判刑 网络安全语录英文 四川省网络安全责任制 我的世界服务器等待人数怎么做 网页的代码可以看到服务器地址吗 计算机网络技术要考哪些证书 网络安全监测及审计 东莞市长安志城软件开发
0