C++ 函数重载问题求教!

编一个程序,用同一个函数名对n个数据进行从小到大的排序,数据类型可以是整型,单精度型,双精度型.用重载函数实现.
以上是问题,
我自己不明白的地方是:1.数据对应的类型就要有对应的函数,怎么才能把你输入的数据与类型对应起来,如果是用条件语句,就麻烦得多了!2.如果我想用冒泡法实现排序,必须知道数据的多少,n不确定,连建立合适的数组都显得麻烦!
小弟初接触C++,求教了!
对好的答案追加30分!
动态数组....不会啊!能帮忙写代码吗?

1. 你可以这样定义三个函数
void MySort(double data[],int size);
void MySort(float data[],int size);
void MySort(int data[],int size);

重载是这样的!

int main()
{
double a[10];
float b[10];
int c[10];

//对a,b,c的初始化XXXXXXXXXXXXXXXXXXXXXXX;;

MySort(a,10);
MySort(b,10);
MySort(c,10);

//这里你不用关心a,b,c具体的类型,
//而读你代码的人一眼也可以看出里代码的意思

//不然你得这样写MySort1(a,10);MySort2(b,10);MySort3(c,10);
}

2. 以上的那个data实际上是个指针,也就是说声明也可以是 void MySort(double* data, int size)这样。如果传入的参数类型不是std::vector的话,那就必须知道后面有多少个数字,也就是参数size是必须的。你想我只随机的告诉你内存中的一块,你就能猜到我这个数组是多大? 不可能! 所以写函数的时候你得让调用者把个数size也传进来。

实际上你所说的动态数组和排序,标准模板库(STL)有非常好的支持,鉴于你刚学,就不跟你介绍了,对C++有一定了解后再看效果更好。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-28
1、重载的几函数写好后,用函数名调用就是了,具体调用哪种参数类型的函数,这是编译器要做的事。
2、建动态数组,用new和delete,就解决的了n不确定的问题。
第2个回答  2010-09-29
STL加模板,要不了几行代码,哪用的着重载那么麻烦的。

另外由于数据类型可以是整型、单精度、双精度,所以元素类型不能做为函数参数,否则在函数参数匹配时会出现二义性。
第3个回答  2010-09-30
你要不用STL向量,要不用模板就行了,模板可以动态生成函数,不用重载定义那么麻烦~~
相似回答