sy4_多态的应用_1.3_类模板
(1) 分别计算int、double、float和long类型数组中的最小值,第三种方法:使用类模板的成员函数实现。
实现思路:
引入类模板的形式构造Min类,以及成员函数T min(T a[], int n),在class之前需要声明,这样才能知道T是定义类模板里面的数据类型
template<typename T>
class Min
{
public:
T min(T a[], int n);
};
成员函数实现,把 Min 看成整体
template<typename T>
T Min<T>::min(T a[], int n)
{
T min = a[0];
for (int i = 1; i < n; i++)
{
if (min > a[i])
min = a[i];
}
return min;
}
模板类对象的创建:
原先的定义类对象的形式
Min a1;
而现在需要先手动生成一个模板类,再由这个模板类去定义对应的对象。即先Min(Min就变成了int型的模板类),再Min a1(a1就是int型的Min类所定义的对象),其他同理。
Min<int> a1;
Min<double> b1;
Min<float> c1;
Min<long> d1;
整段代码:
#include<iostream>
using namespace std;
template<typename T>
class Min
{
public:
T min(T a[], int n);
};
template<typename T>
T Min<T>::min(T a[], int n)
{
T min = a[0];
for (int i = 1; i < n; i++)
{
if (min > a[i])
min = a[i];
}
return min;
}
int main()
{
cout << "(3)类模板:" << endl;
int a[7] = { 5,2,1,3,4,7,6 };
double b[7] = { 0.5,0.3,1.4,1.1,0.9,0.4,0.2 };
float c[7] = { 2.1f,2.3f,2.4f,1.5f,1.8f,1.3f,5.4f };
long d[7] = { 1,2,3,4,5,6,7 };
Min<int> a1;
cout << "int型数组最小值:" << a1.min(a,7) << endl;
Min<double> b1;
cout << "double型数组最小值:" << b1.min(b, 7) << endl;
Min<float> c1;
cout << "float型数组最小值:" << c1.min(c, 7) << endl;
Min<long> d1;
cout << "long型数组最小值:" << d1.min(d, 7) << endl;
return 0;
}