C++默认参数函数及函数重载
有默认参数函数
1.什么是有默认参数函数
一般情况下,C语言中在函数调用时形参从实参取得,但是在C++中提供一种简单处理方法给形参一个默认值,当调用函数时,若该形参未传入参数,则形参使用定义时的默认值。
2.代码实现:
#include<iostream>
using namespace std;
void fun(int a = 1,int b = 2)
{
cout << a <<endl;
cout << b <<endl;
return;
}
int main()
{
fun(); //未传入参数,使用默认值
fun(3,4); //传入参数时,使用传入的参数
}
运行结果:
3.由于实参与形参的结合是从左到右顺序进行,所以有默认值的形参必须放在最右侧。
例:
void fun(int a = 1,int b) //错误
void fun(int b,int a = 1) //正确
同样的,当调用函数时,若该形参未传入参数,则形参使用定义时的默认值。
4.当函数调用在函数定义前时,需要在函数声明时给出默认值,此时,在函数定义时就不需要给出默认值。
如果在声明函数时给出了默认值,在定义函数时也给出了默认值不同编译器可能给出报错信息,所以建议只在函数声明时给出默认值以避免混淆。
函数重载
1.什么是函数重载?
在C++中一个函数名可以定义多个函数,这些函数根据传入参数个数及类型进行调用,这就是函数的重载。即对一个函数名增加定义,使一个函数名可以有多种用途。
2.代码实现:
int add(int a,int b) //int类型变量加法
{
return a+b;
}
double(double a, doublr b) //重载后增加double类型加法
{
return a+b;
}
注:
当函数重载时不能只有函数类型相同,而参数个数,类型,顺序全相同;
- 因为当这样定义函数后,编译系统无法判断到底使用哪一个函数。
当函数重载时传参个数,参数类型,参数顺序不允许全部相同;
- 同样的定义参数全相同的重载函数后,编译系统无法判断到底使用哪一个函数。
当函数重载时,尽量使函数作用相近或同;
- 提高程序可读性,便于理解、阅读。
函数不能既为重载函数,又为有默认参数函数。
- 当未传入参数时,系统无法判定调用哪一个参数。
错误示范1:
int fun(int a)
void fun(int a)//不允许只有函数类型相同,错误
错误示范2:
int fun(int a = 1 )
int fun(int a = 1,int b = 2)//函数不能既为重载函数,又为有默认参数函数。错误