函数高级

168 阅读2分钟

1.函数的默认值

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

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

//函数的默认形参
//如果我们自己传入了数据,就用自己的数据
//语法:返回值类型 函数名 (参数 = 默认值){}
int add(int a=10, int b=20)
{
	return a + b;
}

//注意事项
//1.如果某个位置已经有了默认参数,那么从这个位置以后都要有
//int func2(int a,int b = 10,int c) {
//}

//2.如果函数声明有默认参数,函数实现就不能用默认参数

int main() {
	
	
	//
	cout << add(1, 2) << endl;
	system("pause");

	return 0;
}

2.函数的占位参数

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

//函数的占位参数:
//语法:返回值类型 函数名(数据类型){}
//占位参数可以有默认值
void func(int a, int=10) {

	cout << "this is a function: " << endl;
}

int main() {
	
	//调用函数,占用的位置必须有参数,但是目前这个参数用不了
	func(10, 20);
	
	system("pause");

	return 0;
}

3.函数重载

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

函数重载满足条件

(1)同一个作用于(全局、局部等)。

(2)函数名称相同。

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

4.函数重载注意事项

4.1 引用作为函数重载的条件

4.2 函数重载遇到默认参数:就很容易出现二义性,报错,尽量避免这种情况。

//引用作为函数重载
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(2);
	
	system("pause");

	return 0;
}