函数重载问题。。较为简单,急
重载函数要求同名函数具有相同的功能,而只是只要参数个数不同,参数类型不同,参数顺序不同,函数就可以重载。然而,只是返回类型不同则不允许重载
怎么理解
#include <iostream>
using namespace std;
int max(int x,int y)
{
return (x>y?x:y);
}
float max(float x,float y)
{
return (x>y?x:y);
}
double max(double x,double y)
{
return (x>y?x:y);
}
int main()
{
int a1=6,b1=15;
float a2=2.3f,b2=-1.2f;
double a3=3.2,b3=0;
cout<<"intmax="<< max(a1,b1) <<endl;
cout<<"floatmax="<< max(a2,b2) <<endl;
cout<<"doublemax="<< max(a3,b3) <<endl;
return 0;
}
这个函数只是参数不同吧?返回类型就不同。但然而,只是返回类型不同则不允许重载。会是什么情况
[解决办法]
http://bbs.csdn.net/topics/340258984
不可以这样做的
[解决办法]
还有一个 能够隐含可以类型转换的 不能重载
比如 int 和long
float double , 编译器在处理的时候遇到会自动类型转换, 所以不能重载
如
float a();
double a();
就不可以
[解决办法]
在这种情况 可用模板处理!
template <class T>
T max(T a, T b)
{
//...
}