如何解决我们可以定义两个具有相同名称但参数不同的函数吗?
当我需要定义另一个函数时,我们可以给它起一个不同的名字,这让我感到困惑。但是在LeetCode的讨论中,我发现了一篇很流行的文章,其中有两个名称相同但参数不同的函数。
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,s));
}
解决方法
当我需要定义另一个函数时,我感到很困惑,可以给它起一个不同的名字。
这是C ++最基本的功能之一:函数重载。在C语言中,根本不能有两个具有相同名称的函数。在C ++中,只要函数的函数签名不同即可,即两个函数具有相同的名称但参数集不同,这是完全可能的。
https://en.wikipedia.org/wiki/Function_overloading
,您正在寻找的内容在C ++中称为“函数重载”。 C ++编译器基于函数的声明创建签名。具有相同名称的函数可以具有完全不同的签名。
在您发布的示例中,由于传递的参数不同,签名也会更改。
这是Signature代表的意思: 有关参与重载解析(13.3)的函数的信息:其参数类型列表(8.3.5),以及(如果函数是类成员)函数本身上的cv限定符(如果有)以及声明成员函数的类。
,在强类型语言中,解析器可以(原则上)在函数声明时以及函数调用时使名称相同但参数列表(参数的数量和类型)不同的函数有所不同时间。这称为函数重载,也适用于类方法。
C ++提供了此功能。
在某些情况下,存在歧义,编译器会告诉您。在C ++中,您不能声明仅在返回类型上有所不同的函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。