第三课 函数的提高

3.1函数默认参数
在C++中,函数的形参列表中的形参是可以有默认值的
语法: 返回值类型 函数名(参数 = 默认值 ){}

注意:

  • 如果某个位置形参有默认值,那么从这个位置往后,都必须要有默认值
  • 函数的声明和定义只能有一个含有默认值
// 1.如果某个位置形参有默认值,那么从这个位置往后,都必须要有默认值
// 2.函数的声明和定义只能有一个含有默认值

void func1(int a, int b = 5, int c = 10);

void func1(int a, int b, int c)
{
    cout << a + b + c << endl;
}

int main()
{
    func1(10);  // 有默认值可以不传

    return 0;
}

3.2函数占位参数 C++中函数的形参列表里可以有展位参数,用来做占位,调用函数时必须填补该位置(或给默认参数)

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

void func(int a, int = 10)
{
  cout << "This is a func" << endl;
}

int main()
{
  func();
}

3.3函数重载 作用:函数名可以重复,提高复用性

函数重载满足条件:

  • 同一个作用域下
  • 函数名称相同
  • 函数参数 类型不同 或者 个数不同 或者 顺序不同
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;
}

void func(double b,int a)
{
	cout << "func(double b,int a) 调用" << endl;
}

int main()
{
	//func();
	//func(10);
	//func(10, 3.14);
	func(3.14, 10);


	system("pause");
	return 0;
}

注意:函数的返回值不可以作为函数重载的条件


注意事项:
引用作为重载的条件:

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);  //调用无const
  func(10); //调用有const
  return 0;
}

函数重载碰到函数默认参数

void func2(int a,int b = 10)
{
	cout << "func(int a,int b = 10) 调用" << endl;
}

void func2(int a)
{
	cout << "func(int a) 调用" << endl;
}

存在二义性,调用func(10)会出错,尽量避免

posted @ 2025-04-07 20:25  起名字太难0123  阅读(17)  评论(0)    收藏  举报