目录
一、缺省参数
缺省参数是在声明和定义时为函数的参数指定一个缺省值。在调用函数时如果没有指定实参,则采用该实参的缺省值,否则使用该指定的实参,缺省参数分为全缺省和半缺省参数。
①全缺省就是全部参数给缺省值
cpp
#include<iostream>
using namespace std;
void Func1(int a = 10, int b = 20, int c = 30)
{
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
}
int main()
{
Func1();
return 0;
}
②半缺省就是部分参数给缺省值,C++中规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值
cpp
#include<iostream>
using namespace std;
void Func2(int a, int b = 20, int c = 30)
{
cout << "a=" << a << " ";
cout << "b=" << b << " ";
cout << "c=" << c << endl;
}
int main()
{
Func2(2);
Func2(2,3);
Func2(2,3,4);
return 0;
}

注意:函数的声明和定义分离时,缺省参数不能在函数参数的声明和定义中同时出现,规定必须函数声明给缺省值
二、函数重载
C++支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同
(一)参数个数不同
(二)参数类型不同
cpp
#include <iostream>
using namespace std;
int Add(int left, int right)
{
return left + right;
}
//参数类型不同
double Add(double left, double right)
{
return left + right;
}
//参数类型不同,对于返回值没有要求
long Add(long left, long right)
{
return left + right;
}
(三)参数个数相同、类型一样、仅顺序不同
cpp
void Func1(int i, char ch)
{
}
//参数顺序不同
void Func1(char ch, int i)
{
}
注意:函数只是返回值不同,并不构成重载
cpp
//只是返回值不同,不能构成重载
//int Func1()
//{
//
//}
void Func1()
{
}
(一)什么是函数重载?
在同一作用域里,可以有函数名相同,参数不相同(参数的类型、顺序、个数),对于返回值不要求
(二)c++里面是如何实现函数重载的?c里面为什么不支持?
