首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

函数重载有关问题。较为简单,

2013-06-26 
函数重载问题。。较为简单,急重载函数要求同名函数具有相同的功能,而只是只要参数个数不同,参数类型不同,参

函数重载问题。。较为简单,急
重载函数要求同名函数具有相同的功能,而只是只要参数个数不同,参数类型不同,参数顺序不同,函数就可以重载。然而,只是返回类型不同则不允许重载
怎么理解
#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)
{
//...
}

热点排行