读书人

关于重载的有关问题

发布时间: 2012-04-02 19:58:59 作者: rapoo

关于重载的问题
#include"iostream.h"
double larger(double a,double b);
long& larger(long& a,long& b);
int main()
{
double a_double=1.5,b_double=2.5;
cout<<"The larger of double"<<a_double<<"and"<<b_double<<"is"<<larger(a_double,b_double)<<endl;
int a_int=35,b_int=25;
cout<<"The larger of int"<<a_int<<"and"<<b_int<<"is"<<larger(static_cast<long>(a_int),static_cast<long>(b_int))<<endl;
return 0;
}

double larger(double a,double b)
{
cout<<"double is called"<<endl;
return a>b?a:b;
}
long& larger(long& a,long& b)
{
cout<<"long is called"<<endl;
return a>b?a:b;
}
编译结果是都调用了第一个double函数,即使用了static_cast函数转化成long型也不行,这是为什么呢,大侠请教

[解决办法]

探讨
const long& larger(const long& a,const long& b)

读书人网 >C++

热点推荐