首页 > 后端开发 > C++ > C 函数重载是否只允许返回类型存在差异?

C 函数重载是否只允许返回类型存在差异?

Mary-Kate Olsen
发布: 2024-12-11 19:21:15
原创
918 人浏览过

Does C   Function Overloading Allow Differences Only in Return Type?

返回类型是否包含在函数签名中以及是否允许仅修改返回类型的重载?

在 C 中,有一个区别函数声明和函数实体之间。声明可以建立功能实体或模板实体。对于非模板函数声明,签名包含参数类型、类成员信息(如果适用)和限定符。然而,对于函数模板特化,签名还包含返回类型。

函数特化的函数签名

标准 C 规定,对于函数模板特化,签名涉及返回类型,如第 14.5.5.1 节中突出显示的那样。这包括模板的签名和提供的模板参数。这符合返回类型影响函数类型的理解。

使用区分返回类型的重载

根据标准,函数声明不同的返回类型在重载方面被认为是不同的(第 13.1 节)。然而,“仅因返回类型不同”的定义在语言中仍未指定。

编译器行为

目前,主要编译器拒绝具有相同签名但不同的函数声明返回类型(例如,“int f();”、“double f();”)。然而,这种行为不一定是标准强制要求的。

C 0x 提案草案

最近的 C 0x 草案规范在第 1.3.11 节,明确包含函数实体和模板特化的返回类型。这与返回类型构成函数类型不可分割的一部分的断言相一致。

因此,总而言之:

  • 函数特化在其签名中包含返回类型。
  • 非模板函数的签名中没有返回类型。
  • 重载根据标准,仅禁止返回类型差异,尽管此条件的确切解释可能因编译器和语言版本而异。

以上是C 函数重载是否只允许返回类型存在差异?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板