怎么用函数重载和模板两种方法 来进行N个数据(包括单精度,双精度,整形)从小到大排序?

怎么用函数重载和模板两种方法 来进行N个数据(包括单精度,双精度,整形)从小到大排序?,第1张

代码如下:如果有什么不清楚地,可另行探讨。

#include<iostreamh>

void PopSort(int array[],int n);//函数声明

void PopSort(float array[],int n);

void PopSort(double array[],int n);

template<class T>

void PopSort(T array[],int n,int flag);//模板函数定义

template<class T>

void print(T array[],int n);

void main()

{

//测试函数

//int array[10]={23,32,12,11,31,90,100,55,26,22};

float array1[10]={231f,3222f,112f,110f,315f,902f,8890f,5533f,265f,220f};

double array[10]={23,32001,12,11,322,90,100,55,26,22};

cout<<"函数重载实现排序\nfloat:"<<endl;

PopSort(array1,10);//自动调用PopSort(float array[],int n)

print(array,10);//自动调用PopSort(double array[],int n)

cout<<"double:"<<endl;

PopSort(array,10);

//模板函数调用

print(array,10);

cout<<"模板函数实现排序"<<endl;

PopSort(array,10,1);

print(array,10);

}

/

函数重载

/

void PopSort(int array[],int n)

{

int i,j;

int temp;//中间变量

for(i=0;i<n;i++)//for(i=1;i<n-1;i++)

{

for(j=0;j<n-i;j++)

{

if(array[j]>array[j+1])

{

//数据交换

temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}

}

}

void PopSort(float array[],int n)

{

int i,j;

float temp=0;//中间变量

for(i=0;i<n;i++)//for(i=1;i<n-1;i++)

{

for(j=0;j<n-i-1;j++)

{

if(array[j]>array[j+1])

{

//数据交换

temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}

}

}

void PopSort(double array[],int n)

{

int i,j;

double temp=0;//中间变量

for(i=0;i<n;i++)//for(i=1;i<n-1;i++)

{

for(j=0;j<n-i-1;j++)

{

if(array[j]>array[j+1])

{

//数据交换

temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}

}

}

/

模板应用

/

template<class T>

void PopSort(T array[],int n,int flag)

{

int i,j;

T temp;//中间变量

for(i=0;i<n;i++)//for(i=1;i<n-1;i++)

{

for(j=0;j<n-i-1;j++)

{

if(array[j]>array[j+1])

{

//数据交换

temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}

}

}

template<class T>

void print(T array[],int n)

{

for(int i=0;i<n;i++)

{

cout<<array[i]<<"\t";

if((i+1)%5==0)

{

cout<<endl;

}

}

}

重载:

指在同一个类中:

public

void

eat();

public

void

eat(String

str);

就是说方法名相同,返回类型相同(必须),参数copy列表不相同的方法!zd

重写:

子类和父类的问题

父类有一个public

void

eat();

子类又写了一个public

void

eat();

就是说方法名相同,返回类型相同,参数列表相同!

如果在子类写了一个public

void

eat(String

str);

那么这个不叫重写!叫子类的重载!

多态就是包括重载,重写,还有很多一些别的!

而函数模板我没有听说过,是不是指参数列表!

首先建议你装正版软件,另外记着注册激活,再下个msdn编程就不会出现这么个情况了,有的免费软件真的不是很好用

Microsoft

Visual

Studio

2010旗舰版是个测试版本,但是免费的,需要的话去微软官网下载去25g左右

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12178260.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存