C++Primer第五版 6.6节练习

来源:互联网 发布:淘宝生活服务市场清退 编辑:程序博客网 时间:2024/06/05 22:52

练习6.49:什么是候选函数?什么是可执行函数?
答:候选函数:函数匹配的第一步是选定本次调用对应的重载函数集,集合中的函数称为候选函数。
可行函数:从候选函数中选出能被这组实参调用的函数,这些新选出的函数称为可行函数。

练习6.50:已知有第217页对函数f的声明,对于下面的每一个调用列出可行函数。其中哪个函数是最佳匹配?如果调用不合法,是因为没有可匹配的函数还是因为调用具有二义性?

(a) f(2.56, 42) (b) f(42)(c) f(42,0)(d) f(2.56,3.14)

答:声明如下:

void f();void f(int);void f(int, int);void f(double,double = 3.14);
a.  f(2.56,42)//可行函数 void f(int, int); //2.56可以转化int即2//可行函数 void f(double, double)//产生二义性错误2.56double精确匹配,42 int精确匹配b.  f(42)//可行函数, void f(int)//可行函数 void f(double, double) ,相当于 f(42,3.14)//最佳匹配 void f(int)c.  f(2.56,3.14)//可行函数 void f(int, int); //2.56可以转化int即2, 3.14转化为 int即3//可行函数 void f(double, double)//最佳匹配void f(double, double)

练习6.51:编写函数f的4个版本,令其输出一条可以区分的信息。验证上一个练习的答案,如果你回答错了,反复研究本节的内容知道你弄清楚自己错在何处。
答:见云盘程序,和上一题全符合

练习6.51

/**练习6.51*2015/6/25*问题描述:练练习6.51:编写函数f的4个版本,令其输出一条可以区分的信息。验证上一个练习的答案,如果你回答错了,反复研究本节的内容知道你弄清楚自己错在何处。*功能:比较 *作者:Nick Feng *邮箱:nickgreen23@163.com * */#include <iostream>using namespace std;void f(){    cout << "call f()... " << endl; }void f(int a){    cout << "The value is:" << a << endl;     cout << "call void f(int)..." << endl;}void f(int a, int b){    cout << "a is:" << a << " b is:" << b << endl;    cout << "call void f(int, int)..." << endl; }void f(double a, double b = 3.14){    cout << "a is: " << a << " b is:" << b << endl;    cout << "call void f(double, double)..." << endl; }int main(){    //#ifndef NDEBUG     //f(2.56, 42); no macthing for call to f(double ,int)    //cerr << __func__ << "may occurs something wrong!" << endl;     //#endif    f(42);    f(42,0);    f(2.56,3.14);    return 0;} 
0 0
原创粉丝点击