泛型与模板:C++和Java中的类型参数化编程
1. 泛型与模板简介
在传统编程中,为不同数据类型编写代码时会遇到诸多问题。例如,在C语言中,若要实现一个存储整数的链表程序,当需要存储浮点数或字符串时,就必须重新编写一个新程序。虽然这些不同版本的链表程序在结构上有很多相似之处,但它们在功能上不能相互替换。
在C++和Java中,为了解决这些问题,分别引入了模板(templates)和泛型(generics)的概念。模板或泛型程序可以是一个类或方法,通过一个变量进行参数化,这个变量可以实例化为不同的类型。
1.1 C++中的链表示例
普通的C++链表类可能如下所示:
class LinkedList {
struct Node {
Node* next;
int val;
};
Node* head;
public:
// public interface of the class
};
由于 Node 结构体中的 val 成员被定义为 int 类型,这个链表只能存储整数。而参数化后的版本如下:
template<class T> class LinkedList {
struct Node {
Node* next;
T val;
};
Node* h
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



