c++ - 为什么在 c++ 中不考虑函数返回类型的重载?
问题描述
我知道我们称之为重载函数,编译器尝试匹配精确的原型,然后进行类型提升。但是我们谈到返回类型,编译器不进行精确匹配并抛出错误。我不确定它背后的逻辑。亲爱的朋友,你能帮帮我吗?在此先感谢大家
解决方案
C++ 重载的规则已经很复杂了。试图考虑返回值的使用方式会使它们变得更加复杂。如果您尝试编写一些连贯的规则来涵盖这一点,您会看到它们是如何变得复杂的。
当然,int n = foo();
很简单。但是bar(foo())
相当复杂。或者考虑bar() + foo()
哪个bar
被调用决定了operator+
你正在调用什么,因此foo
可以支持哪些返回类型。
并且标准必须精确地指定编译器如何以及何时需要判断适当的返回类型。否则代码可能会在一个编译器上编译而不是在另一个编译器上编译,从而设置痛苦的陷阱。
推荐阅读
- python - 如何将传入的 UDP 消息存储在数据库中并通过 REST API 访问?
- python - 如何将 python 代码更改为应用程序以在与同一文件夹中的文件一起保存的任何文件夹中运行
- c# - 忽略一个序列化调用的 [JsonConverter] 属性
- java - 如何在片段抛出适配器中传递接口?
- powershell - 是否可以从称为进程的 powershell 脚本中获取输入?
- php - 如何按 ID 包含文件:MY shop the LAST Setting
- amazon-web-services - 在 AWS Step Functions 中监控数据库准备情况、S3 事件和粘合作业的条件等待?
- python - Python tkinter - Radiobutton的重复类,如何将一个函数分配给一个类?
- airflow - 气流:Jinja 模板未在 subdag pythonOperator 中呈现
- linux - ambari_agent 重启导致 ansible 崩溃