首页 > 解决方案 > 为什么在 c++ 中不考虑函数返回类型的重载?

问题描述

我知道我们称之为重载函数,编译器尝试匹配精确的原型,然后进行类型提升。但是我们谈到返回类型,编译器不进行精确匹配并抛出错误。我不确定它背后的逻辑。亲爱的朋友,你能帮帮我吗?在此先感谢大家

标签: c++

解决方案


C++ 重载的规则已经很复杂了。试图考虑返回值的使用方式会使它们变得更加复杂。如果您尝试编写一些连贯的规则来涵盖这一点,您会看到它们是如何变得复杂的。

当然,int n = foo();很简单。但是bar(foo())相当复杂。或者考虑bar() + foo()哪个bar被调用决定了operator+你正在调用什么,因此foo可以支持哪些返回类型。

并且标准必须精确地指定编译器如何以及何时需要判断适当的返回类型。否则代码可能会在一个编译器上编译而不是在另一个编译器上编译,从而设置痛苦的陷阱。


推荐阅读