C++语言学习记录-11:函数重载

函数重载介绍

函数重载就是将在同一作用域内,语义、功能相似具有相同函数名字,不同参数列表(参数的个数,顺序和类型不同)的函数称为函数重载,其存在的目的是便于记忆,以防后续调用函数时出错。也可以使函数名相同,以提高它的复用性。

函数重载实例

以计算整型或浮点型绝对值的函数为例

#include<iostream>
using namespace std;
int abs(int x){
	 return x<0? -x : x;
}
double abs(double x){
	return x<0? -x : x;
}
int main()
{
	int m;
	cin>>m;
	cout<<abs(m)<<endl;
	double n;
	cin>>n;
	cout<<abs(n)<<endl;
	return 0;
}

使用以上程序就可以在输入想求解绝对值的数字后,若输入为整型,则将数字赋值给m,若为浮点型则赋值给n,通过这样的步骤选择相应的函数进行计算。根据传入的不同参数来选择不同的函数进行调用。
注意,函数重载需要满足以下条件:

  • 同一个作用域下
  • 函数名称相同
  • 函数参数类型不同、个数不同或者顺序不同
    而返回值类型不同不能作为函数重载的条件,比如写一个void类型的函数和一个int类型的函数,他们的函数名是相同的,这样的话编译器就会报错。

引用作为重载条件

现在有如下两种函数

#include<iostream>
using namespace std;
void func(int &a)
{
	cout<<"func(int &a)的调用"<<endl;
}
void func(const int &a)
{
	cout<<"func(const int &a)调用"<<endl;
}
int main()
{
	func(10);
	int a = 10;
	func(a);
	return 0;
}

第一个调用函数的结果调用的是第二个func函数,第二个调用的函数是第一个func函数。如果第二个函数调用进入了函数1,就会发生&a=10;语句在编译器内部自动执行,这样的语句是不合法的。而进入的是第二个函数,就会执行const int &a = 10;这一条语句是合法语句。

#include<iostream>
using namespace std;
void func(int a, int b = 10)
{
	cout<<"有默认参数的函数调用"<<endl;
}
void func(int a)
{
	cout<<"没有默认参数的函数调用"<<endl;
int main()
{
	int a =10;
	func(a);
}

这时编译器不能正常执行指令,还是因为这时候有了默认参数,可以调用上面两个函数,因此编译器报错。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值