gpt4 book ai didi

polymorphism - 类 C 语言中的返回类型多态性

转载 作者:行者123 更新时间:2023-12-04 01:36:02 25 4
gpt4 key购买 nike

为什么我们看不到允许在返回类型中具有多态性的可调用对象的类 C 语言?我可以看到额外的类型推断将如何成为障碍,但我们有 plenty of languages具有成熟的类型推理系统(适用于不同级别的“工作”)。

编辑:返回类型多态是指仅在返回类型中重载函数签名。例如,C++ 和 Java 只允许在形参类型中重载,而不允许在返回类型中重载。

最佳答案

如果“返回类型多态性”是指基于返回值类型的重载,我不确定其他语言,但对于 C++,这是答案(几乎来自马口):

函数返回类型不会在重载决议中发挥作用,仅仅因为 Stroustrup(我假设来自其他 C++ 架构师的输入)希望重载决议是“上下文无关的”。请参阅“C++ 编程语言,第三版”中的 7.4.1 -“重载和返回类型”。

The reason is to keep resolution for an individual operator or function call context-independent.



他们希望它仅基于如何调用重载 - 而不是如何使用结果(如果它被使用的话)。事实上,许多函数在不使用结果的情况下被调用,或者结果将用作更大表达式的一部分。当他们决定这样做时,我确信会发挥作用的一个因素是,如果返回类型是解析的一部分,则会有许多对重载函数的调用,这些调用需要使用复杂的规则来解析,或者必须让编译器抛出调用不明确的错误。

而且,上帝知道,C++ 重载解析就其现状而言已经足够复杂了……

关于polymorphism - 类 C 语言中的返回类型多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/249296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com