| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 715 人关注过本帖
标题:怎么理解【最佳可行函数】应该满足的条件?
只看楼主 加入收藏
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
结帖率:88.89%
收藏
已结贴  问题点数:10 回复次数:6 
怎么理解【最佳可行函数】应该满足的条件?
9.4.3 最佳可行函数
最佳可行函数是具有与实参类型匹配最好的参数的可行函数,对于每个可行函数来说,每个实参的类型转换都被划分了等级,以决定每个实参与其相应参数的匹配程度。(9.2 节描述了得到支持的类型转换)最佳可行函数是满足下列条件的可行函数:
1 用在  实参上的转换不比调用其他可行函数所需的转换更差。
2 在某些实参上的转换要比其他可行函数对该参数的转换更好。

以上引用于 C++ primer 3rd 中文版 潘爱民 张丽 译
书上原文。我怎么也不理解,第一点和第二点说的不就是一个意思吗?第一个说,不比调用其它可行函数进行的转换差,第二个说要比调用其它可行函数进行的转换好。只不过第二点特别说明了“某些实参”。我真想不明白为什么要把这两个条件分开说。请大虾们给点方向。小弟在此先行谢过了。
搜索更多相关主题的帖子: 函数 条件 
2010-06-03 22:58
迷失的木桶
Rank: 4
等 级:业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
收藏
得分:1 
搞得这么复杂,我想其实弄明白隐式转换的原理,那么最佳可行函数就顺其自然了,
2010-06-04 16:01
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:1 
  最佳可行函数??这个没有标准答案吧,如果是自己用的话,根据问题的实际需要来确定他的参数(具体问题具体分析嘛)。如果是要做成一个成型的函数让大家一起来使用的话,那就应该充分的考虑了》》》》》》个人观点
                                                

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-06-04 19:38
迷失的木桶
Rank: 4
等 级:业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
收藏
得分:4 
楼主说的【最佳可行函数】我还第一次听到,以前都只知道最佳匹配函数,这是在函数重载中发生。

struct sint {
sint(int i); // 构造时隐式转换,支持 sint si = 100;

operator int (void); // 声明隐式转换操作,支持 int i = si;
}

void fun(int i);
void fun(sint si);

void main(void
{
    fun(100); // ??  匹配哪个?
}

楼主思考一下吧
2010-06-04 23:41
Isilendil
Rank: 2
来 自:广东省广州市
等 级:论坛游民
帖 子:13
专家分:42
注 册:2010-6-2
收藏
得分:4 
看看第四版吧

(1) 其每个实参的匹配都不劣于其他可行函数需要的匹配。
(2) 至少有一个实参的匹配优于其他可行函数提供的匹配。

至少有一个匹配优于其他的同时,不能有任何一个匹配劣于其他
2010-06-05 00:24
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
以下是引用迷失的木桶在2010-6-4 23:41:13的发言:

楼主说的【最佳可行函数】我还第一次听到,以前都只知道最佳匹配函数,这是在函数重载中发生。

struct sint {
sint(int i); // 构造时隐式转换,支持 sint si = 100;

operator int (void); // 声明隐式转换操作,支持 int i = si;
}

void fun(int i);
void fun(sint si);

void main(void
{
    fun(100); // ??  匹配哪个?
}

楼主思考一下吧
谢谢你设计的问题。我想,我明白了你的意思。
在c++ primer 3rd中说到一句话, 最佳可行函数 又叫 最佳匹配函数,    我不知道哪个名字被用得多一点,呵呵。
我猜,fun(100);应该匹配 void fun(int i);吧,因为转换等级中“不转换比转换好”。


to all
谢谢大家的帮助。我知道,大家都为我花费了精力和时间,分给得不均,我深感抱歉,但因为 “第四版” 让我能理解那两句话,只好这样了。再一次谢谢大家。

个为感觉3版的翻译有点不好(可能是我的理解能力的问题),同时笔误也比较多,因为笔误 让我们初学者学习中感觉迷惑的地方 真让人烦心。。。。
2010-06-09 17:58
yi19860699
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:42
专家分:40
注 册:2009-9-3
收藏
得分:0 
菜鸟的我 长见识了
2010-06-09 22:03
快速回复:怎么理解【最佳可行函数】应该满足的条件?
数据加载中...
 
   



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

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