3.1 函数默认参数
本节内容之前已经整理过,详见22.函数的默认值
3.2 函数占位参数
C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须补填该位置
语法:
返回值类型 函数名 (数据类型) {}
在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术
示例:
#include <iostream>
using namespace std;
// 函数占位参数,占位参数也可以有默认值
void func(int a, int) {
cout << "this is a func" << endl;
}
int main() {
func(1, 2);
return 0;
}
3.3 函数重载-基本语法
作用:函数名可以相同,提高复用性
函数重载满足条件:
- 同一个作用域下
- 函数名相同
- 函数参数类型不同或者个数不同或者顺序不同
注意:函数的返回值不可以作为函数重载的条件
示例:
#include <iostream>
#include <iostream>
using namespace std;
// 1.参数类型不同
void print(int a)
{
cout << "int" << endl;
}
void print(double a)
{
cout << "double" << endl;
}
// 2.参数顺序不同
void print(double a, int b) {
cout << "int int" << endl;
}
void print(int a, double b) {
cout << "double double" << endl;
}
// 注意:同类型参数顺序不同是不被允许的,因为函数名相同,编译器会认为这是同一个函数
// void print(int a, int b) {}和void print(int b, int a) {}同时出现时,编译器会报错
// 3。参数个数不同
void print(int a, int b, int c) {
cout << "int int int" << endl;
}
void print(int a, int b, int c, int d) {
cout << "int int" << endl;
}
// 注意事项:函数返回值类型不同不可作为函数重载的条件
int main()
{
print(1);
print(1.0);
print(1.0, 1);
print(1, 1.0);
print(1, 1, 1);
print(1, 1, 1, 1);
return 0;
}
3.4 函数重载-注意事项
- 引用作为重载条件
- 函数重载碰到函数默认参数
示例:
#include <iostream>
using namespace std;
// 函数重载注意事项
// 1.引用作为重载的条件
void fun(int& a) {
cout << "func(int& a)调用" << endl;
}
void fun(const int& a) {
cout << "func(const int& a)调用" << endl;
}
// 2.函数重载碰到默认参数
void func(int a) {
cout << "func(int a)调用" << endl;
}
void func(int a, int b = 10) {
cout << "func(int a, int b = 10)调用" << endl;
}
int main() {
// func(int& a)调用
int a = 10;
fun(a);
// func(const int& a)调用
const int b = 10;
fun(b);
fun(10);
// 当函数调用碰到默认参数会出现二义性报错
// func(10); // 错误❌,默认参数不能省略
func(10,10); // 正确
return 0;
}