泛型编程的简介

泛型编程是一种新的编程思想,基于模板技术有效的将算法和数据结构分离。泛型编程是指编写完全一般化并恶意重复使用的算法。就是指具有在多种数据类型上皆可操作,在c++上就是使用模板实现。

例如:我们要实现各个数据类型的最大值。需要写如下的函数重载。

int max(int a, int b)
{
	return (a > b) ? a : b;
}

float max(float a, float b)
{
	return (a > b) ? a : b;
}

double max(double a, double b)
{
	return (a > b) ? a : b;
}
long max(long a, long b)
{
	return (a > b) ? a : b;
}

使用基于c++中提供的泛型编程思想,模板的方法可以使用如下的方式替代。这里的class不代表对象的类,而是类型(可以使用typename替代)这样max函数的各个参数以及返回值的类型都为T,对于任意类型的两个数,我们都可以调用max求大小。

另外,T作为函数参数以及函数的返回值类型,他几乎可以是任意类型,也可以是类。当然这个类需要重载">"操作符。

如下示例:

#include "stdafx.h"
#include <iostream>
using namespace std;

#if 1
//template <class T>
template <typename T>//typename 也可以使用class代替
T max(T a, T b)
{
	return (a > b) ? a : b;
}
#endif

int main()
{
	cout << "max value:" << max(1, 2) << endl;
	cout << "max value:" << max(1.1f, 2.6f) << endl;
	cout << "max value:" << max(1.123l, 2.3456l) << endl;
	cout << "max value:" << max('b', 'd') << endl;
	cout << "max value:" << max<int>(3, 2.4) << endl;
	return 0;
}

值得注意的是 max<int>(3, 2.4),由于参数中包含两种数据类型,编译器就不清楚到底该调用哪一种版本的max函数。编译的时候会报出如下的错误。所以需要 max<int>(3, 2.4)使用int指定类型为int。 

代码的测试结果:

max value:2
max value:2.6
max value:2.3456
max value:d
max value:3
请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值