c++运行细节,又会得朋友帮下忙
时间:2011-12-22
来源:互联网
using namespace std;
int ad(int a,int d){
return a*d;
}
float ad(int a,float f){
return a*f;
}
int main(){
int a=10;
int b=2.5;//这里不是应该强制转换么,为什么没有(int)?
float s=2.55;
float g=5.52;
cout<<ad(a,b)<<endl;
cout<<ad(s,g)<<endl;//怎样去寻在匹配的函数呢?
return 0;
}
大家帮帮忙,这种细节不明白~
作者: freestyleboy21 发布时间: 2011-12-22
这里会调用double类型到int的隐式转换,就像类的类型转换函数一样操作一样
cout<<ad(s,g)<<endl;//怎样去寻在匹配的函数呢?
先找到所有可用的名字叫ad函数,然后进行最佳匹配,如果存在多个最佳匹配就会报错。
作者: woshiwaiwai 发布时间: 2011-12-22
#include<stdio.h> #include<string.h> using namespace std; int ad(int a,int d){ return a*d; } float ad(int a,float f){ return a*f; } int main(){ int a=10; int b=2.5;//编译器会隐式强制转换 float s=2.55; float g=5.52; cout<<ad(a,b)<<endl;//根据你传进函数值的类型去匹配函数 cout<<ad(s,g)<<endl;//怎样去寻在匹配的函数呢? return 0; }
作者: shenxinji 发布时间: 2011-12-22
A:"明天去加班吗?"
B:"我去! 我不去。"
到底去不去??
作者: gykgod 发布时间: 2011-12-22
所以编译器选择第二个
作者: yisikaipu 发布时间: 2011-12-22
作者: gykgod 发布时间: 2011-12-22
你费那事干嘛,用模板弄下不就OK了 啊
作者: cbzjzsb123 发布时间: 2011-12-22
怎样去寻在匹配的函数呢?
先找到所有可用的名字叫ad函数,然后进行最佳匹配,如果没有最佳匹配的话,会选择进行转换之后的最佳匹配,这种选择是以最少转换参数来选择最佳的,函数int ad(int a,int d) 和float ad(int a,float f),与ad(s,g)调用,第二个函数的第二个参数是精确匹配,第一个参数需要进行转换,而第一个函数两个参数都需要转换,所以选择第二个函数为匹配函数。
作者: LoveIOS 发布时间: 2011-12-22
所以编译器选择第二个
这个说法是完全错误的。更正。
作者: yisikaipu 发布时间: 2011-12-22
作者: mingliang1212 发布时间: 2011-12-22
正常结贴5;
未结帖6;
建议用模板;
作者: lj10193019 发布时间: 2011-12-22
作者: zhwei_87 发布时间: 2011-12-22
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28