VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 121|回复: 7

[已解决]函数的重载

[复制链接]
16_avatar_middle
最佳答案
0 
在线会员 发表于 2020-6-8 12:44:30 | 显示全部楼层 |阅读模式
#include <iostream>
#include <string>
using namespace std;
int max(int a, int b)
{
        return a > b ? a : b;
}
float max(float a,float b)
{
        return a > b ? a : b;
}
int main()
{
        cout << max(5.1,6.1);
}
会报错说  “max”: 对重载函数的调用不明确
1>          d:\vs编程的垃圾\hello world\1\1\1.cpp(8): 可能是“float max(float,float)”
1>          d:\vs编程的垃圾\hello world\1\1\1.cpp(4): 或       “int max(int,int)”
这是怎么回事啊,这个不是很明确吗,
max(小数)就调用float;
max(整数)就调用int;
最佳答案
70_avatar_small
2020-6-8 15:09:20
cout << max((float)5.1, (float)6.1);
5.1和6.1都是double的
而double 可以自动转换成 int ,或float,
编译器不知道你想调哪一个函数了,直接 强制转换类型,指明你想调的函数




上一篇:MFC关于变量类型转换的问题。
下一篇:VS2017,SetFilePointer函数从后往前读取数据出现错误
70_avatar_middle
最佳答案
16 
在线会员 发表于 2020-6-8 15:09:20 | 显示全部楼层    本楼为最佳答案   
bestAnswer
cout << max((float)5.1, (float)6.1);
5.1和6.1都是double的
而double 可以自动转换成 int ,或float,
编译器不知道你想调哪一个函数了,直接 强制转换类型,指明你想调的函数

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 很给力!

查看全部评分

51_avatar_middle
最佳答案
79 
online_admins 发表于 2020-6-8 13:14:25 | 显示全部楼层
给你自己代码中的 max 函数改个名字吧,应该是跟标准库中 std::max 重名了
34_avatar_middle
最佳答案
0 
在线会员 发表于 2020-6-8 13:22:56 | 显示全部楼层
编译器觉得你的函数的确不明确。因为整型是float的类型子集。比如一个数值3,表面看是一个int类型,但也可以赋值给float类型的变量。所以编译器提示重载函数的调用不明确。


34_avatar_middle
最佳答案
0 
在线会员 发表于 2020-6-8 13:23:58 | 显示全部楼层
老大说max和标准库重名,你换个名字,我想还会提示重载函数的调用不明确。
16_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-6-8 14:23:33 | 显示全部楼层
Syc 发表于 2020-6-8 13:14
给你自己代码中的 max 函数改个名字吧,应该是跟标准库中 std::max 重名了

改了也是不行啊,
有多个重载函数“max”实例与参数列表匹配
函数max(int a,int b);
函数max(float a,float b)
参数类型为(double,double)
16_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-6-8 14:32:49 | 显示全部楼层
david2020 发表于 2020-6-8 13:22
编译器觉得你的函数的确不明确。因为整型是float的类型子集。比如一个数值3,表面看是一个int类型,但也可 ...

那就不能这样子去重载了吗?
16_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-6-8 15:17:35 | 显示全部楼层

可以可以,我忘了强制转换了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-8-12 15:10

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表