当前位置:   article > 正文

C++学习笔记10--函数提高_c++ int &a

c++ int &a

函数默认参数

在C++中,函数的形参列表中的形参是可以有默认值的。

语法:

返回值类型  函数名  (参数 = 默认值){}
  • 1

举例

1、未使用函数默认参数时

int func(int a, int b, int c)
{
	return a + b + c;
}

int main()
{
	cout << func(10, 20, 30) << endl;

	system("pause");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

2、使用函数默认参数,情况 1

int func(int a, int b = 20 , int c = 30)
{
	return a + b + c;
}

int main() 
{

	cout << func(10) << endl;

	system("pause");

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述

3、使用函数默认参数,情况 2

如果我们自己在调用函数时传入数据,就用自己的数据,如果没有,那么用默认值

int func(int a, int b = 20 , int c = 30)
{
	return a + b + c;
}

int main() 
{
	cout << func(10,30) << endl; 此时计算的 b 是 30

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

注意事项

注意事项 
1、如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值
int func2(int a = 10, int b, int c, int d)  错误,因为 a 有默认值,则 a 后面的参数都要有默认值

改正:
int func2(int a = 10, int b = 20, int c = 30, int d = 40) 
{
	return a + b + c;
}

2、如果函数声明有默认参数,函数实现就不能有默认参数, 函数调用时也不能传递参数
   声明和实现只能有一个有默认参数
int func2(int a = 10, int b = 20);   函数声明
 
int func2(int a, int b)   函数实现
{
	return a + b;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

函数占位参数

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

语法:

返回值类型  函数名  (数据类型) {}
  • 1
占位参数 还可以有默认参数
void func(int a , int)
{
	cout << "this is func " << endl;
}

int main() 
{
	func(10,10); 
	system("pause"); 
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

函数重载

函数重载概述

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

函数重载满足条件:

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

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

void func()    第一个
{
	cout << "func 的调用" << endl;
}

void func(int a)  第二个
{
	cout << "func (int a) 的调用" << endl;
}

void func(double a)  第三个
{
	cout << "func (double a) 的调用" << endl;
}

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

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


注意事项
函数的返回值不可以作为函数重载的条件
int func(double a, int b)    这不是一个函数重载,不可用
{
	cout << "func (double a, int b) 的调用" << endl;
}


int main() {

	func();  第一个
	func(10); 第二个
	func(3.14);  第三个 
	func(10, 3.14);  第四个
	func(3.14,10);  第五个

	system("pause");

	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
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

在这里插入图片描述

函数的返回值不可以作为函数重载的条件
在这里插入图片描述

函数重载的注意事项

  • 引用作为重载条件
  • 函数重载碰到函数默认参数

C++学习笔记9: 引用.

1、引用作为重载的条件
void func(int &a)      int &a = 10; 不合法
{
	cout << "func(int &a)调用" << endl;
}
void func(const int &a)     const int &a = 10;  合法
{
	cout << "func(const int &a)调用" << endl;
}
int main() 
{
	int a = 10;
	func(a);  
	func(10); 

	system("pause");

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述

2、函数重载碰到默认参数
void func2(int a ,int b = 10)
{
	cout << "func2(int a  , int b) 的调用" << endl;
}

void func2(int a)
{
	cout << "func2(int a ) 的调用" << endl;
}
int main() 
{
	func2(10);   只传 1 个参数,此时上面的两个函数,都可以调用,
				 当函数重载碰到默认参数,出现二义性,报错,尽量避免这种情况
				 当写函数重载时,就不要写默认参数
				 
	func2(10,20);  传两个参数,肯定是调用第一个
	system("pause");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/编程先知/article/detail/63129
推荐阅读
相关标签
  

闽ICP备14008679号