第三章:
3.函数提高
3.1 函数默认参数
语法结构:返回值类型 函数名 (参数 = 默认值){}
#include <iostream>
using namespace std;
int func1(int a = 1, int b = 2, int c = 3)
{
return a + b + c;
}
int func2(int a = 1, int b = 2);
int func2(int a , int b)
{
return a + b;
}
int main()
{
int num1 = func1();
int num2 = func2();
cout << num1 << endl; //6
cout << num2 << endl; //3
system("pause");
return 0;
}
补充:
如果某位置参数有默认值,那该位置往后,从左向右,都需要有默认值。
如果函数声明有默认值,函数实现的时候就不能有默认参数。
3.2 函数占位参数
语法结构:返回值类型 函数名
#include <iostream>
using namespace std;
void func(int a , int) //占位参数也可有默认参数
{
cout << "func函数的调用" << endl;
}
int main()
{
func(10, 20); //占位参数必须填补
system("pause");
return 0;
}
3.3 函数重载
3.3.1 函数重载概述
作用:函数名可相同,提供复用性。
满足条件:
同一作用域下
函数名相同
函数参数类型不同或个数不同或顺序不同
#include <iostream>
using namespace std;
void func()
{
cout << "func函数的调用" << endl;
}
void func(int a)
{
cout << "func(int a)函数的调用" << endl;
}
void func(int a, double b)
{
cout << "func(int a, double b)函数的调用" << endl;
}
int main()
{
func(); //func函数的调用
func(10); //func(int a)函数的调用
func(10, 3.14); //func(int a, double b)函数的调用
system("pause");
return 0;
}
补充:函数返回值不可作函数重载条件。
3.3.2 注意事项
将引用作为重载条件
函数重载遇到函数默认参数
//将引用作为重载条件
#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()
{
int a = 10;
func(a); //func(int& a)函数的调用
func(10); //func(const int& a)函数的调用
system("pause");
return 0;
}
//函数重载遇到函数默认参数
#include <iostream>
using namespace std;
void func(int a)
{
cout << "func(int a)函数的调用" << endl;
}
void func(int a, int b =10)
{
cout << "func(int a, int b =10)函数的调用" << endl;
}
int main()
{
int a = 10;
func(10); //报错,出现二义性。
system("pause");
return 0;
}