标题:这个程序是哪里错了?
只看楼主
小编程员
Rank: 1
来 自:广州
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-7-31
结帖率:75%
已结贴  问题点数:20 回复次数:14 
这个程序是哪里错了?
#include<iostream.h>
int test(int,int,int);
float test(int,int,float=3.5F);
void main()
{test(1,2,3.2);
}
int test(int x,int y,int z)
{cout<<"调用的是第一个函数。"<<endl;
return 1;}
float test(int x,int y,float z)
{cout<<"调用的是第二个函数。"<<endl;
return 1.0;}
这是书上的一道改错题,上面说用float test(int,int,float=3.5F)重载int test(int,int,int)是错的,但我不知道为什么错,望高手给予会答!
搜索更多相关主题的帖子: void 
2009-09-05 12:52
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:2 
重载没有错,哪个书上说错了?你把原话写出来看看。明明是调用有二义性
2009-09-05 13:03
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
得分:2 
以下是引用小编程员在2009-9-5 13:38的发言:
嗯,是有二义性,那么二义性是再哪里?
第三个参数的 参数类型。一个为int一个为float
2009-09-05 13:47
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
得分:2 
float test(int,int,float=3.5F)
换成float test(int,int,double=3.5)就没错了
2009-09-05 22:31
kqscy1
Rank: 2
等 级:论坛游民
帖 子:17
专家分:81
注 册:2009-9-3
得分:2 
我认为是因为你float类型的那个test函数最后一个参数已经赋值,所以,你主函数中调用语句test(1,2,3.2)在选择使用函数时最后一个参数不匹配。如果把主函数test中最后一个参数去掉或者是改成3.5F就不会出错了。
楼上那位的改法在编译时没问题,但是在链接生成程序时就会因为参数不匹配出错
2009-09-07 17:17
forclwy
Rank: 4
等 级:业余侠客
帖 子:167
专家分:255
注 册:2008-10-21
得分:2 
3.2 被认定为double类型,因此没有test函数中没有与之相匹配的函数,因此将
float test(int,int,float=3.5F) 改为:
float test(int,int,double=3.5)
是这样儿的吧
2009-09-07 20:16
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
得分:0 
回复 5楼 kqscy1
我用的是VC6.0能够编译连接成功
2009-09-08 20:40
xiaoshuaihu1
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2009-6-25
得分:2 
#include<iostream.h>
int test(int,int,int);
float test(int,int,float=3.5F);
void main()
{
    test(1,2,3.2F);
}
int test(int x,int y,int z)
{
    cout<<"调用的是第一个函数。"<<endl;
    return 1;
}
float test(int x,int y,float z)
{
    cout<<"调用的是第二个函数。"<<endl;
    return 1.0;
}
2009-09-12 15:30
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
得分:2 
程序代码:
#include<iostream.h> 
int test(int,int,int); 
float test(int,int,float=3.2); 
void main() 
{ 
    float d,k; 
    int h,j; 
    h=1;j=2; 
    k=3.2; 
    d=test(h,j,k); 
} 
int test(int x,int y,int z) 
{ 
    cout<<"调用的是第一个函数。"<<endl; 
return 1; 
} 
float test(int x,int y,float z) 
{ 
    cout<<"调用的是第二个函数。"<<endl; 
return 1.0; 
} 
这样好像就可以了!你看一下呢!

编程语言视频教程在线播放学习
2009-09-12 16:29
小兰01
Rank: 2
等 级:论坛游民
帖 子:24
专家分:33
注 册:2009-9-9
得分:2 
没调用
这个主函数中没调用这两个函数,你所说的调用只是函数定义。
2009-09-13 15:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-284858-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.328301 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved