重载函数的确定
来源:互联网 发布:java创建倒排表 编辑:程序博客网 时间:2024/04/29 08:41
在C++ Primer中函数重载这一节讲到,为了确定最佳匹配,编译器将实参类型到相应形参的转换划分等级。转换等级以降序排列如下:
1.精确匹配。实参与形参类型相同
2.通过类型提升实现的匹配。
3.通过标准转换实现的匹配。
4.通过类类型转换的实现。
可是在下面的程序却发现,2的优先级甚至超过了1,十分不明白,所以先记下来,望大虾解答一下。
#include <iostream>
using namespace std;
//根据函数的参数列表不同而调用不同的函数
//一般来说,类型的提升优于类型的转换
void f(){ cout << "void f() is called!" << endl;}
void f(int a) {cout << "void f(int a) is called! " << endl;}
void f(double, double = 3.4){cout << "f(double, double = 3.4) is called! " << endl;}
int main()
{
//int i = 0;
//int j = 0;
//calc(i,j);
f(42, 2.6);
f(23);
return 0;
}
在VS08编译执行,结果如下所示:
f(double, double = 3.4) is called!
f(double, double = 3.4) is called!
本来结果,以本人猜想,后一个应该调用“void f(int a)”函数,结果出人意料,不知所以然。
- 重载函数的确定
- Decode函数返回类型的确定
- MFC菜单处理函数地址的确定
- 工作风格的确定
- J2EE项目的确定
- 指针类型的确定
- AA065VD时序的确定
- CONFIG_DM9000_BASE 值的确定。
- 关键路径的确定
- 循环数的确定
- 仿真方向的确定
- 递归调用的确定
- 二叉树的确定
- 证书的确定
- 进程优先级的确定
- 目标值的确定
- PCB层数的确定
- PopupWindow位置的确定
- 开源项目的汇总
- js汉字转拼音
- cout<<endl
- 从Unicode到太玄经
- prepareStatement(String sql,int autoGeneratedKeys)方法的使用
- 重载函数的确定
- Coyote Linux 频宽管制 (QoS) 设定教学
- top and limit
- MS图表控件for .net framework3.5的部署
- java集合框架笔记
- 对datatable进行排序
- 好几天没女友的音讯了
- Linux 的带宽管理系统
- Delete之后的指针