函数重载&缺省参数

一.函数重载&缺省参数

1.重载函数

     首先我们来看一段非常简单的代码:  

#include<iostream>
using namespace std;

版本较老的编译器,头文件会加上.h,我这里因为编译器的不同,没有加.h。为了能够使用标准库,我们还需要加上using namespace std;
 

int Add(int a,int b)
{
	return a+b;
}
int main()
{
	int x;
	int y;
	cin>>x>>y;
	cout<<Add(x,y);
	return 0;

}

Add函数的作用是将两个int型的数据相加,返回值也为int型。但很多时候,我们不仅要处理int型,还有float,double,char等类型的数据,那我们就需要再写几个像上面那样的函数,只是把int改为float,double,char等,每处理一种类型就要重新写一个函数,但是这些函数的内容大同小异,我们却要重复地做。更糟糕的是,对于这些函数,如何起名字、记名字,也是一件头疼的事。

    在c++中,重载函数,这样一种机制,可以有效地避免这些困扰。

    如果同一个作用域内的几个函数名字相同但是形参列表不同,我们称之为重载函数

    所以,重载函数有一下几个特性:1.作用域相同 2.函数名相同 3.形参列表不同(参数类型,参数个数)。

float Add(float a,float b)
{
	return a+b;
}
double Add(double a,double b)
{
	return a+b;
}
char Add(char a,char b)
{
	return a+b;
}

这些函数接受的形参类型不同,但是执行的操作非常类似。当调用这些函数时,编译器会根据传递的实参推断想要的是哪个函数。函数的名字仅仅是让编译器知道它调用的是哪个函数,而重载函数可以在一定程度上减轻程序员起名字、记名字的负担。

注意:1.main函数不能重载 

         2.不允许两个函数除了返回值 类型外其他所有的要素都相同

2.有默认参数的函数

    一般情况下,在函数调用时形参从实参那里取值,因此实参的个数与形参相同。有多次调用同一函数时用同样的实参,c++提供简单的处理方法,给形参一个默认值,这样形参就不必一定要从实参取值了。

 

void* GetMemory(int size=100)
{
	return malloc(size);
}
int main()
{
	GetMemory();
	GetMemory(200);
	return 0;

}

GetMemory( );形参列表没有参数,这就是带有默认参数的函数,调用函数时,传参传默认参数100;

如果另外给出参数,那就用新给的参数。

但是,一个函数不能既作为重载函数,又作为有默认参数的函数。因为当调用函数时,如果少写一个参数,系统无法判定是利用重载函数还是利用默认参数的函数,出现二义性,系统无法执行。

void* GetMemory(int size=100)
{
	return malloc(size);
}

void* GetMemory()
{
	int size = 100;
	return malloc(size);
}


int main()
{
	GetMemory();
	GetMemory(200);
	return 0;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值