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

以上引用于 C++ primer 3rd 中文版 潘爱民 张丽 译
书上原文。我怎么也不理解,第一点和第二点说的不就是一个意思吗?第一个说,不比调用其它可行函数进行的转换差,第二个说要比调用其它可行函数进行的转换好。只不过第二点特别说明了“某些实参”。我真想不明白为什么要把这两个条件分开说。请大虾们给点方向。小弟在此先行谢过了。
搜索更多相关主题的帖子: 函数 条件 
2010-06-03 22:58
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
快速回复:怎么理解【最佳可行函数】应该满足的条件?
数据加载中...
 
   



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

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