文档介绍:面向对象设计方法? 泛型简介? C++ 中的泛型? STL ? JAVA 中的泛型? C++ 和 JAVA 中泛型的比较? 泛型的好处第九章泛型技术 (Generic) ,是指具有在多种数据类型上皆可操作的含意。既编写的代码可以在不同的数据类型上重用。实现对源代码进行重用,既不是通过继承和聚合重用对象代码,也不是代码的复制粘贴复用。泛型编程(Generic Programming) 泛型简介 C++ 中泛型简介在 C++ 语言中称泛型为模板(template), 模板由函数模板和类模板两部分组成,以所处理的数据类型的说明作为参数的函数叫做函数模板, 而以所处理的数据类型的说明作为参数的类就叫类模板。 C++ 中的泛型 1. 示例:加法函数的重载 int Add( int a, int b ) { return a + b ; } long Add(long a, long b ) { return a + b ; }根据不同的数据类型进行多次重载, 但是实现的代码都是一致的。 函数模板 2. 函数模板的语法 template <class Type> Type Add( Type a, Type b ) { return a + b ; }具体使用为: Add(10,100); Add(,); 函数模板 template : 关键字,总是放在模板的定义与声明的最前面<> : 模板参数列表,如果有多个模板参数用逗号隔开;模板参数分模板类型参数和模板非类型参数(代表一个常量表达式)。 class :关键字, 声明模板类型参数,用 typename 替代也可以。 函数模板 template <class Type> 例如: template <class Type , class TypeB> Type Add( Type a, TypeB b ) { return a + b ; }注意此时 a和b是两种不同的变量类型 函数模板例如: template <class Type , int size> Type Add( Type a) { return a + size ; }注意此时 a是模板类型参数,而 size 是模板非类型参数。模板非类型参数是常整数(包括枚举值)或者指向外部链接对象的指针,不能是浮点数和类对象。 函数模板例如: template <class Type > Type Add( Type a , int size) { return a + size ; }注意此时 a是模板类型参数,而 size 是函数参数 函数模板