函数名与参数列表相同,但是返回值不同,这是合法的函数重载
时间: 2024-04-23 21:24:25 浏览: 10
不是合法的函数重载。函数重载要求函数名相同,但是参数列表不同,返回值不同是不能作为函数重载的条件。因为函数重载的目的是为了让同名函数能够接受不同类型和数量的参数,而返回值不同并不能够体现这个目的。
如果两个函数的函数名和参数列表都相同,但是返回值不同,编译器会报错,因为这样会导致函数调用时出现二义性,即编译器无法确定应该调用哪一个函数。
因此,在进行函数重载时,必须要保证函数名和参数列表的类型、数量、顺序都不同,而返回值的类型并不是重载函数的条件。
相关问题
具有相同函数名但具有不同参数表的函数称为
具有相同函数名但具有不同参数表的函数称为重载函数(Overloaded Function)。
在 C++ 中,函数重载允许使用相同的函数名定义多个函数,只要它们的参数列表不同即可。参数列表包括参数的个数、类型和顺序,称为函数的特征标(Function Signature)。
例如,下面的代码定义了两个名为 `add` 的函数,它们的参数列表不同:
```cpp
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int main() {
cout << "add(1, 2) = " << add(1, 2) << endl; // 调用第一个 add 函数
cout << "add(1.1, 2.2) = " << add(1.1, 2.2) << endl; // 调用第二个 add 函数
return 0;
}
```
在这个例子中,定义了两个名为 `add` 的函数,一个接受两个整型参数,另一个接受两个双精度浮点型参数。这两个函数的函数名相同,但是它们的参数列表不同,因此它们是两个不同的函数。在 `main` 函数中,分别调用了这两个函数,并输出了它们的返回值。
输出结果为:
```
add(1, 2) = 3
add(1.1, 2.2) = 3.3
```
可以看到,不同的参数列表对应着不同的函数,它们可以具有相同的函数名。这就是函数重载的概念。
重载是发生在一个类里面,必须为同名函数,切函数的参数类型不同或者参数类型的顺序不同或者返回值不同。此说法正确吗
这个说法基本上是正确的。重载是指在同一个类中定义多个同名函数,但它们的参数列表不同,包括参数类型、参数个数、参数顺序等。以下是关于重载的几个要点:
1. 必须为同名函数
重载的函数必须拥有相同的名称,也就是说,它们的函数名必须相同。
2. 参数类型不同或参数个数不同或参数顺序不同
重载的函数允许参数类型、参数个数、参数顺序等方面的不同,只要它们的函数名相同即可。例如,以下是一个重载的例子:
```java
public class Calculator {
public int add(int x, int y) {
return x + y;
}
public double add(double x, double y) {
return x + y;
}
public int add(int x, int y, int z) {
return x + y + z;
}
}
```
在上面的代码中,`Calculator` 类定义了三个名为 `add` 的函数,它们的参数列表分别为 `(int, int)`、`(double, double)` 和 `(int, int, int)`,它们都是重载函数。
3. 返回值不同
重载函数的返回值可以不同,因为编译器会根据函数的参数列表来选择合适的重载函数。在调用重载函数时,编译器会根据传入的参数的类型和数量来判断调用哪个函数,而不是根据函数的返回值类型。
需要注意的是,重载函数不允许仅仅通过参数的名称或者参数的修饰符的不同来区分。因为编译器在重载函数时只考虑函数的参数列表,而不会考虑参数的名称和修饰符。