函数匹配:实参类型转换

重点:

1.函数匹配的第一步是选定本次调用对应的重载函数集,集合中的函数称为候选函数。

2.候选函数具备两个特征:①是与被调用的函数同名;

                                    ②其声明在调用点可见。

3.函数匹配的第二步考察本次调用提供的实参,然后从候选函数中选出能被这组实参调用的函数,称为可行函数。

4.可行函数的两大特点:①其形参数量和被提供的实参数量相同;

                                 ②每个实参类型与形参类型相同或者是能转换成形参类型。

NOTE:如果函数含有默认实参,则我们在调用函数时传入的实参数量可能会少于它实际使用的实参数量。

5.函数匹配的第三步是从可行函数中选择与本次调用最匹配的函数。

6.“最匹配”:实参类型与形参类型越接近,匹配地越好。

7.若无法判断孰优孰劣,编译器最终会因为这个调用具有二义性而拒绝其请求。

TIP:调用函数应该尽量避免强制类型转换。如果实际应用过程中确实需要强制类型转换,则说明我们设计的形参集合不合理。

8.为了确定最佳匹配,编译器将实参类型到形参类型的转换划分为几个等级,具体排序:

①精确匹配;

②通过const转换实现的匹配;

③通过类型提升实现的匹配;

④通过算术类型转换或者指针转换实现的匹配;

⑤通过类类型转换实现的匹配。

9.小整型一般都会提升到int类型或者更大的整数类型。

Void manip ( long );

Void manip ( float );

Manip ( 3.14 );//错误:二义性调用

10.函数匹配和const形参:

   实参是const -> 形参是const的函数;

   实参非const -> 形参非const的函数;

 

 

 

 

 

 

posted @ 2016-08-20 09:58  Widereye  阅读(843)  评论(0编辑  收藏  举报