c++学习第四讲---函数提高

1.函数默认参数:

在( )中将参数赋值,如果传值了,则用传入值,否则才用函数中默认参数。

例:

int func(int a, int b = 3, int c = 3)
{
	return a + b + c;
}
int main()
{
	cout << func(1, 2) << endl;//6
	return 0;
}

注:1.如果一个位置有了默认参数,那么之后的所有位置都要有默认参数。

int func(int a = 1, int b, int c = 3)//错误,a有默认参数后,其后参数都应该有默认参数
{
	return a + b + c;
}

2.声明和实现只能有一个有默认参数。

int func(int a = 1, int b = 2);
int func(int a = 1, int b = 2)//错误,重定义,声明和实现只能有一个有默认参数
{
	return a + b;
}

2.函数占位参数:

在函数( )中只有数据类型,没有变量名的变量称作函数占位参数。

且占位参数必须有值传入。

void func(int a, int)//int 即为占位参数
{
	cout << a << endl;
}
int main()
{
	func(10, 10);//有两个值,后面的传给占位参数
	return 0;
}

注:1.暂时用不到。
       2.占位参数也可以有默认参数。  (int =10)

3.函数重载

3.1.概念:

函数名称相同,提高复用性。

即根据传入的数据不同调用同名的不同函数。

3.2.满足条件:

(1)在同一个作用域下;

(2)函数名相同;

(3)函数参数类型不同,或者个数不同,或者顺序不同。

注:1.返回值不同不作为函数重载的条件;

       2.参数有无 const 算作不同类型。

例:

void func()
{
	cout << "func的调用1" << endl;
}
void func(int a)
{
	cout << "func的调用2" << endl;
}

3.3.注意事项:

1.引用作为重载条件:(有无 const )

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

2.函数重载+默认参数:

void func(int a)
{
	cout << "func(int a)的调用" << endl;
}
void func(int a, int b = 10)
{
	cout << "func(int a)的调用" << endl;
}
int main()
{
	func(10);//错误,函数重载两种都可调用
	return 0;
}

结论:在函数重载中尽量不出现默认参数。

你可能感兴趣的:(c++,学习,算法)