(41.2)类模板之类模板的应用

文章目录

1.泛型编程

  • 面向过程PO(procedure oriented) 、 面向对象OO(object oriented) 、 泛型编程GP(generic programming) 是三种重用的编程方法。

  • 早期的C++语言泛型编程思想仅仅体现于简单的模板技术, 之后的标准模板库STL(standard template library) 是泛型编程思想的实际体现和具体实现。

  • 面向过程是通过将代码段封装在一个函数中, 通过函数调用来实现目标代码的重用。

  • 面向对象是通过类的继承来实现对象目标代码的重用。

  • 如果需要编写一个可用于不同数据类型的算法, 可以采用的方法有:
    ①面向过程的方法: 对源代码进行复制和修改, 生成不同数据类型版本的算法函数, 调用时需要对数据类型进行人工的判断;
    ②面向对象的方法: 在一个类中, 编写多个同名函数, 它们的算法一致, 但是所处理数据的类型不同, 当然函数的参数类型也不同,通过函数重载来自动调用(系统自动调用)对应数据类型版本的函数。
    显然, 以上两种方法都需编写多个相同算法的不同函数, 不能做到代码真正的重用。 它们二者之间的主要差别, 只是调用方便与否。
    如果采用泛型编程, 就可以实现源代码级的重用。

  • 泛型算法的定义
    泛型(generic) 是一种允许一个数据取不同类型的技术, 与操作对象数据类型独立的算法称为泛型算法, 独立于任何特定类型的编程方法称为泛型编程。

  • 模板是泛型编程的基础。
    泛型编程关注于产生通用的软件组件, 让这些组件在不同的应用场合都能很容易地重用。
    在C++中, 类模板和函数模板是进行泛型编程极为有效的机制

  • 类模板的应用eg

 #include <iostream>
using namespace std;
template <class T> //声明一个模板, 虚拟类型名为T
class Compare //类模板名为Compare
{
	public :
		Compare(T a,T b){x=a;y=b;}
		T max(){return (x>y)?x:y;}
		T min(){return (x<y)?x:y;}
	private :
		T x,y;
};
int main()
{
	Compare<int> a(4,7);//int对应T
	cout<<"a: max="<<a.max()<<",min="<<a.min()<<endl;
	return 0;
}
发布了556 篇原创文章 · 获赞 140 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/104303553