泛型编程在非C++语言中的实现之探讨
左轻侯
2001.9.22
GP(Generic Programming,泛型编程)号称编程思想的又一次革命。但是,在论述GP的资料中,一般都是以C++语言为基础来讨论。那么,GP是否可以在其它的编程语言中实现呢?这是作者一直在思考的一个问题,因为水平有限和资料匮乏,收获甚微。现将一些不成熟的想法整理出来,请方家不吝指教。
本文以Delphi为例(Java的情况与此类似,可参照),讨论GP的另一种实现思路。代码是随手写出的,未经验证。
根据作者的理解,实现GP的关键之处,在于实现ADT(Abstract Data Type,抽象数据类型)。只有实现了ADT,才能够将具体的数据类型与通用的算法分离开来。
在C++中,ADT的存储是通过模板来实现的。举一个最简单的栈的例子(没有给出实现部分):
template <class Type> class Stack{
public:
void Push(const Type &item);
Type Pop;
...
}
栈的应用:
Stack <int> s;
int data;
data = 1;
s.Push(data); file://入栈
int out;
out = s.Pop; file://出栈
通过建立一个int类型的Stack对象,实现了对int类型数据的存储。
但是ÿ