C++函数提高
函数默认参数
在C++中,函数的形参列表中的形参是可以有默认值的
语法: 返回值类型 函数名 (参数 = 默认值){}
#include <iostream> using namespace std; int func (int a, int b = 10, int c = 10) //某个位置有了默认值,这个位置之后必须都有默认值 { return a + b + c; // 输出40 因为用户传入了b 不使用默认值 } int main() { func(10, 20); return 0; }
注意事项:
函数声明 和 函数定义(实现)只有一个能有默认参数
函数占位参数
C++中函数的形参列表里可以有占位参数,用来占位,调用函数时必须填补该位置
语法: 返回值类型 函数名 (数据类型){}
void func1 (int a, int) // 第二个int是占位参数 { cout << "hello world" <<endl; } void func2 (int a, int = 20) // 占位参数可以有默认值 { cout << "hello world" <<endl; } int main() { func1(10, 20); //占位没有默认值时 必须传入第二个值 func2(10); //占位有默认值时 可以不传入第二个值 return 0; }
函数重载
函数重载概述
作用:函数名可以相同,提高复用性
函数重载满足条件:
- 同一个作用域下
- 函数名相同
- 函数参数类型不同 或者 个数不同 或者 顺序不同
注意:函数的返回值不可以作为函数重载的条件
函数重载的注意事项
- 引用作为重载条件
- 函数重载碰到函数默认参数
#include <iostream> using namespace std; //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; } //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() { int a = 10; func (a); // func (int &a)调用 func (10); //func (const int &a)调用 //func2 (10); //报错 两个func2都能被调用 出现二义性 func2 (10, 20); //没问题 return 0; }

浙公网安备 33010602011771号