当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C语言中的返回类型多态性》经验,为你挑选了1个好方法。

为什么我们看不到允许返回类型中具有多态性的callables的类C语言?我可以看到附加类型推断是如何成为障碍的,但是我们有很多语言都有完整的类型推理系统(适用于不同级别的"工作").

编辑:返回类型多态性我的意思是仅在返回类型中重载函数签名.例如,C++和Java只允许在形式参数的类型中重载,而不是在返回类型中.



1> Michael Burr..:

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

函数返回类型不会在重载解析中发挥作用,因为Stroustrup(我假设其他C++架构师的输入)希望重载解析为"上下文无关".请参见"C++编程语言,第三版"中的7.4.1 - "重载和返回类型".

原因是保持单个运算符或函数调用的分辨率与上下文无关.

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

而且,主知道,C++重载分辨率足够复杂,因为它代表......

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有