📅  最后修改于: 2023-12-03 15:29:51.910000             🧑  作者: Mango
在C++中,函数重载和默认参数是两个重要概念。函数重载允许在同一作用域内定义多个具有相同名称但参数不同的函数,而默认参数则是可以为函数的参数指定一个默认值。下面是相关内容的详细介绍。
函数重载是指在同一个作用域内,可以定义多个函数名相同但参数列表不同的函数,这些函数被称为“重载函数”,编译器会根据调用时的参数类型、数量、顺序等信息选择最佳匹配的函数进行调用。
函数参数的不同形式包括:参数个数、参数类型、参数顺序
int sum(int x, int y) {
return x + y;
}
int sum(int x, int y, int z) {
return x + y + z;
}
double sum(double x, double y) {
return x + y;
}
int sum(int x, int y) {
return x + y;
}
int sum(int x, int y) {
return x + y;
}
int sum(double x, int y) {
return x + y;
}
函数重载有几个需要注意的事项:
只有在同一个作用域内进行函数重载,不同作用域内的同名函数不算重载;
重载函数的返回值类型可以相同也可以不同;
重载函数不能仅通过参数类型的区别来区分,如下面的例子:
void print(int x) {
cout << "print int: " << x << endl;
}
void print(double x) {
cout << "print double: " << x << endl;
}
在这种情况下,如果我们调用print(1)
,编译器就不知道应该使用哪个函数,因为1
既可以被看成int
类型也可以被看成double
类型。
默认参数是指函数定义时为某些参数提供默认值,使得在调用函数时可以只填写必须的参数,其他的参数使用默认值,这样既能简化函数调用,又能减少代码量。
在函数定义时使用默认参数,可以在参数列表中给参数设置默认值,例如:
int sum(int x, int y = 0, int z = 0) {
return x + y + z;
}
在这个函数定义中,y
和z
都有默认值,如果调用时没有传入这两个参数,则使用默认值。
当函数有默认参数时,函数声明时也需要声明默认值,写法有两种:
int sum(int x, int y = 0, int z = 0);
int sum(int x, int y, int z);
int sum(int x, int y = 0, int z = 0) {
return x + y + z;
}
默认参数有几个需要注意的事项:
int main() {
int result = sum(1, z=2);
return 0;
}
这里我们省略了第二个参数y的值,但是通过z=2
为第三个参数z指定了默认值。
int sum(int x, int y = 0, int z = 0);
// 正确调用
sum(1);
sum(1, 2);
sum(1, 2, 3);
// 错误调用,无法根据顺序调用默认参数
sum(1, , 2);
sum(1, 2, , 3);
函数重载和默认参数是C++中非常重要的概念,可以使程序更加简洁,同时也能减少出错的概率。我们需要掌握函数重载和默认参数的用法和相关的注意事项,以便更好地运用它们。