| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 533 人关注过本帖
标题:重载冲突问题
收藏  订阅  推荐  打印
vfdff
Rank: 6Rank: 6
等级:金牌会员
帖子:1165
积分:12968
威望:4
注册:2005-7-15
重载冲突问题

我定义了两个函数
double Short_File_Pnsr(char const *fpath1,char const *fpath2);与
double Short_File_Pnsr(char const *fpath1,char const *fpath2,int planValue = 0);
并声明
extern double Short_File_Pnsr(char const *fpath1,char const *fpath2);与
extern double Short_File_Pnsr(char const *fpath1,char const *fpath2,int planValue = 0);
在使用Short_File_Pnsr(“pre.raw”,"post.raw");进行调用,有个错误是重载冲突
把第二个函数声明的默认值去掉成为
extern double Short_File_Pnsr(char const *fpath1,char const *fpath2,int planValue);后(定义保持不变),再编译这个错误就消失
我有个疑问,难道函数的形势以声明为准吗?
2008-6-15 18:49
xunxunmimi
Rank: 2
等级:注册会员
帖子:66
积分:862
注册:2006-12-12

不知道“难道函数的形势以声明为准吗?”这句话什么意思

可以将一个Short_File_Pnsr函数改名

一个函数不能:既作为重载函数,又作为有默认参数的函数
2008-6-16 11:20
vfdff
Rank: 6Rank: 6
等级:金牌会员
帖子:1165
积分:12968
威望:4
注册:2005-7-15
回复 2# xunxunmimi 的帖子

可以吧,只是这里有冲突而已,如我把另一个函数的参数个数修改了 就不会有冲突了
2008-6-17 00:37
itfate
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2008-8-9

你函数的默认值错了...
有3个参数时,当第三个参数设成默认值时,必需第2个必需也设有默认值....
2008-8-9 18:32
vfdff
Rank: 6Rank: 6
等级:金牌会员
帖子:1165
积分:12968
威望:4
注册:2005-7-15
回复 4# itfate 的帖子

恩 其实就是带有一个默认值的三个参数的函数和 两个参数的函数由冲突
2008-8-22 16:25
yi1018
Rank: 2
等级:注册会员
帖子:41
积分:534
注册:2008-7-25
回复 5# vfdff 的帖子

你知道是怎么回事对吧!!!可是有时还是会出现这种情况。

Don't repeat yourself !!!
2008-8-23 14:49
scauhj
Rank: 1
等级:新手上路
帖子:10
积分:210
注册:2008-4-15

当重载时,第二个函数中第三个参数为默认,编译器寻找的时候就会出现二义性,所以会出现那种情况。你在使用第二个函数时可以显式Short_File_Pnsr(“pre.raw”,"post.raw",0)不就行咯
2008-8-25 22:46
共有 532 人关注过本帖
发新话题
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.051718 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved