java定义类模板_定义模板——函数模板和类模板

面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。不同之处在于:OOP能处理类型在程序运行之前都未知的情况;而在泛型编程中,在编译时就能获知类型了。

前面介绍的容器、迭代器和算法都是泛型编程的例子。当我们编写一个泛型程序时,是独立与任何特定类型来编写代码的。当使用一个泛型程序时,我们提供类型或值,程序实例可在其上运行。

模板是泛型编程的基础。一个模板就是一个创建类或函数的蓝图或者说公式。当使用一个vector这样的泛型类型,或者find这样的泛型函数时,我们提供足够的信息,将蓝图转换为特定的类型函数。这种转换发生在编译时。

定义模板

假定我们希望编写一个函数来比较两个值,并指出第一个值是小于、等于还是大于第二个值。在实际中,我们可能想要定义多个函数,每个函数比较一个给定类型的值。我们的初次尝试可能定义多个重载函数:

int compare(const string &v1,const string &v2)

{if(v1v2) return 1;return 0;

}int compare(const double &v1,const string &v2)

{if(v1v2) return 1;return 0;

}

这两个函数几乎相同,唯一的差别是参数的类型,函数体则完全一样。

如果对每种希望比较的类型都不得不重复定义完全一样的函数体,是非常烦琐且容易出错的。更麻烦的是,在编写程序的时候,我们就要确定可能要compare的所有类型。

函数模板

我们可以定义一个通用的函数模板,而不是为每个类型都定义一个新函数。一个函数模板就是一个公式,可用

你可能感兴趣的:(java定义类模板)