C++ 函数重载
(┭┮﹏┭┮大一写的小水文,先放着摆个位置)
🌈函数默认参数
- 在C++中,函数的形参列表中的形参是可以有默认值的
- 语法 :返回值类型 函数名(行参=默认值){ }
- 注意:1.如果某个位置已经有了默认参数,那么这个位置后面都必须有默认值 2.如果函数声明有默认参数,函数实现就不能有默认参数;反之,实现有了,默认就不能有
1 |
|
🌈函数的占位参数
- 函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
- 可以有默认参数
- 语法:返回值类型 函数名 (数据类型){ }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using namespace std;
int func(int a,int)//第二个int表示占位参数
{
cout<<"this is func"<<endl;
}
int func1(int a,int=1)//给占位参数赋默认值
{
cout<<"this is func1"<<endl;
}
int main()
{
func(1,1);//占位参数必须填补
func1(1);//已有默认参数可以不用填补
return 0;
}
🌈函数重载
- 作用:函数名相同,提高复用性
- 条件:同一作用域下函数名相同,函数参数类型不同或个数不同或顺序不同
- 注意:函数的返回值不可以作为函数重载的条件
- 引用也可以作为函数重载的条件
- 函数重载尽量避免使用默认参数,容易出现二义性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using namespace std;
int func(int &a)//引用作为重载条件
{
cout<<"func(int &a)的调用"<<endl;
}
int func(int const &a)//参数类型不同 const修饰常量类型
{
cout<<"func(int const &a)的调用"<<endl;
}
int func1(int a,int b=20)//函数重载碰到默认参数时,容易出现二义性,尽量避免使用默认参数
{
cout<<"func1(int a,int b=20)的调用"<<endl;
}
int func1(int a)//func1函数参数个数不同,可以重载
{
cout<<"func1(int a)的调用"<<endl;
}
int main()
{
int a=10;
func(a);//调用无const函数,a是变量,可读可写
func(10);//调用有const函数,输入了常量,只读
//func1(10);//报错,两个func1都可以调用,存在二义性
func1(10,20);//调用func1(int a,int b=20),有两个参数
return 0;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 亦小染のBlog!