我们可以定义两个名称相同但参数不同的函数吗?
Can we define two functions with same name but different parameters?
我很困惑,当我们需要定义另一个函数时,我们可以给它起一个不同的名字。但是在 LeetCode 讨论中,我发现了一个流行的 post,其中有两个同名但参数不同的函数。
int longestPalindromeSubseq(string s) {
return longestPalindromeSubseq(0,s.size()-1,s);
}
int longestPalindromeSubseq(int l, int r, string &s) {
if(l==r) return 1;
if(l>r) return 0; //happens after "aa"
return s[l]==s[r] ? 2 + longestPalindromeSubseq(l+1,r-1, s) :
max(longestPalindromeSubseq(l+1,r, s),longestPalindromeSubseq(l,r-1, s));
}
I am confused when we need to define another function we can give it a different name.
这是C++最基本的特性之一:函数重载。在 C 中,您根本不能有两个同名的函数。在C++中,只要函数函数签名不同,即两个函数具有相同的名称但不同的参数集,这是完全可能的。
您所看到的在 C++ 中称为“函数重载”。 C++ 编译器根据函数的声明创建签名。您可以拥有完全不同的同名函数签名。
在您发布的示例中,由于传递的参数不同,签名发生了变化。
签名的含义如下:
有关参与重载决议的函数的信息 (13.3):它的 parameter-type-list (8.3.5),如果函数是 class 成员,则 cv-qualifiers (如果有的话)在函数本身和声明成员函数的 class 上。
在强类型语言中,解析器也可以(原则上)在 function-declaration 时区分具有相同名称但参数列表(参数的数量和类型)不同的函数作为 function-call 时间。这称为函数重载,也适用于 class 方法。
C++ 提供此功能。
在某些情况下,有歧义,编译器会告诉你。在 C++ 中,您不能声明仅 return 类型不同的函数。
我很困惑,当我们需要定义另一个函数时,我们可以给它起一个不同的名字。但是在 LeetCode 讨论中,我发现了一个流行的 post,其中有两个同名但参数不同的函数。
int longestPalindromeSubseq(string s) {
return longestPalindromeSubseq(0,s.size()-1,s);
}
int longestPalindromeSubseq(int l, int r, string &s) {
if(l==r) return 1;
if(l>r) return 0; //happens after "aa"
return s[l]==s[r] ? 2 + longestPalindromeSubseq(l+1,r-1, s) :
max(longestPalindromeSubseq(l+1,r, s),longestPalindromeSubseq(l,r-1, s));
}
I am confused when we need to define another function we can give it a different name.
这是C++最基本的特性之一:函数重载。在 C 中,您根本不能有两个同名的函数。在C++中,只要函数函数签名不同,即两个函数具有相同的名称但不同的参数集,这是完全可能的。
您所看到的在 C++ 中称为“函数重载”。 C++ 编译器根据函数的声明创建签名。您可以拥有完全不同的同名函数签名。
在您发布的示例中,由于传递的参数不同,签名发生了变化。
签名的含义如下: 有关参与重载决议的函数的信息 (13.3):它的 parameter-type-list (8.3.5),如果函数是 class 成员,则 cv-qualifiers (如果有的话)在函数本身和声明成员函数的 class 上。
在强类型语言中,解析器也可以(原则上)在 function-declaration 时区分具有相同名称但参数列表(参数的数量和类型)不同的函数作为 function-call 时间。这称为函数重载,也适用于 class 方法。
C++ 提供此功能。
在某些情况下,有歧义,编译器会告诉你。在 C++ 中,您不能声明仅 return 类型不同的函数。