【C++ 03】函数提高

目录

1 函数默认参数

2 函数占位参数

3 函数重载

3.1 函数重载概述

3.2函数重载的注意事项

1 函数默认参数

在C++中,函数的形参列表中的形参是可以有默认值的;如果没有传递参数使用默认值,如果传递了参数,使用传递的值;

语法:返回值类型 函数名(参数=默认值){}

注意事项
1、如果某个位置已经有了默认参数,那么从左到右都必须有默认值

2、如果函数的声明有了默认参数,那么函数实现就不能有默认参数 声明和实现只能有一个定义形参默认值

/函数的默认参数
//语法:返回值类型 函数名(参数=默认值)
int func02(int a, int b=20, int c=30)
{
	return a + b + c;
}
//注意事项
//1、如果某个位置已经有了默认参数,那么从左到右都必须有默认值
//2、如果函数的声明有了默认参数,那么函数实现就不能有默认参数 声明和实现只能有一个定义形参默认值
int func03(int a=10, int b=10);
int func03(int a, int b)
{
	return a + b;
}
int main()
{

	//cout << "ref=" << ref << endl;
	cout << func02(10,30,20) << endl;
	cout << func03() << endl;

	system("pause");
	return 0;
}

2 函数占位参数

C++中函数的形参列表中可以有占位参数,用来做占位,调用时必须填补该位置,

语法: 返回值类型 函数名(数据类型);

//返回值类型 函数名(数据类型)
//目前阶段中的占位参数 我们还用不到,后面会介绍
//占位参数 还可以有默认参数
void func04(int a,int = 10)
{
	cout << "this is func04 " << endl;
}
int main()
{

	//cout << "ref=" << ref << endl;
	func04(10);

	system("pause");
	return 0;
}

3 函数重载

3.1 函数重载概述

作用:函数名可以相同,提高复用性

函数重载满足条件:

  • 同一个作用域下
  • 函数名称相同
  • 函数参数类型不同,或者个数不同,或者顺序不同

函数返回值不可以作为函数重载的区分条件

//函数重载
//可以让函数名相同,提高函数的复用性
//函数重载需要满足的条件:
//1、同一个作用域下
//2、函数名称相同
//3、函数参数类型不同,或者个数不同,或者顺序不同;
void func05() {
	cout << "func diaoyong " << endl;
}

void func05(int a) {
	cout << "func diaoyong  int a" << endl;
}
void func05(double a) {
	cout << "func diaoyong  double a" << endl;
}
void func05(double a,int b) {
	cout << "func diaoyong  double a int b" << endl;
}
void func05(int a, double b) {
	cout << "func diaoyong  int a double b" << endl;
}
//函数的返回值不可以作为函数重载的条件
int func05(int a, double b) {
	cout << "func diaoyong  int a double b" << endl;
}
int main()
{

	//cout << "ref=" << ref << endl;
	//func04(10);
	func05();
	func05(10);
	func05(3.14);
	func05(3.14,10);
	func05(10, 3.14);
	system("pause");
	return 0;
}

3.2函数重载的注意事项

引用作为重载条件;

函数重载碰到各种函数默认参数;

函数重载时不要使用默认参数

//函数的返回值不可以作为函数重载的条件
//函数重载的注意事项
//1、引用作为重载的条件
void func06(int& a)
{
	cout << "func06 int &a" << endl;
}

void func06(const int& a)
{
	cout << "func06 int const &a" << endl;
}

//2、函数重载碰到默认参数
void func07(int a,int b=10)
{
	cout << "func07 int &a" << endl;
}

void func07(int a)
{
	cout << "func07 int a" << endl;
}
int main()
{
	int a = 10;
	func07(a);
	system("pause");
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章