初始c++中的缺省参数和函数重载

一、缺省参数

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

        缺省参数可以是全缺省和半缺省(缺少一部分)

     举个例子:

1、全省参数

#include<iostream>
using namespace std;
int add(int a = 10, int b = 20,int c = 30)//所有的参数都制定了默认值
{
	return a + b + c;
}
int main()
{
	int ret = add();//c++中可以不用传参
	int ret2 = add(22);
	int ret3 = add(22, 33);
	int ret4 = add(11, 22, 33);
	cout << ret << endl;
	cout << ret2 << endl;
	cout << ret3 << endl;
	cout << ret4 << endl;
	return 0;
}

全省参数传参时必须依次从左向右,如果没有传参的使用指定的默认值。

2、半省参数

声明和定义的函数的参数只有一部分的参数被指定。

半省参数必须从右往左给出,不能隔着给。

举个例子:

int Mul(int x=1, int y=0,int z)
{
	return x * y*z;
}

这样就会报错,必须从有向左给出。

只有当z有了缺省值,y才能有,然后,x才能有。

举个例子:

int Mul(int x, int y=2,int z=6)
{
	return x * y*z;
}
int main()
{
	int ret = Mul(1);//x没有默认值,调用函数时必须给x传参。
	cout << ret << endl;
	return 0;
}

3、缺省参数不能在函数声明和定义中同时出现。

4、缺省值必须时全局变量或者常量。

二、函数重载

函数重载:是函数的一种情况,c++允许在同一作用域中声明几个功能类似的同名函数。但是这些函数的形参列表必须不同(参数个数,顺序,类型不同)

举例如下:

#include<iostream>
using namespace std;
int Add(int x, int y)
{
	return x + y;
}
double Add(double x, double y)//参数类型不同
{
	return x + y;
}
int Add(int x, int y, int z)//参数数目不同
{
	return x + y + z;
}
int main()
{
	cout << Add(10, 20) << endl;
	cout << Add(10.22, 20.22) << endl;
	cout << Add(10, 20,30) << endl;
	return 0;
}

以上Add都是函数重载。运行结果如下:

 

函数重载和函数的返回值类型无关。

2、为什么c++中能够实现函数重载。

答:因为文件链接时,调用函数,会通过声明的函数名在符号表中找它对应的地址,C语言中编译器不会对同名函数进行修饰,参数不同,在调用时不知道该调用哪一个,所以会报错,在C语言中不能实现函数重载。

而C++中会对名字进行修饰,根据参数的不同,是它们有不同的名字,依据不同参数,找相应的名字,从而实现函数重载。

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值