模板概念:
最初设计C++时,template称为被参数化的类型。参数化是因为类型的相关信息可以从template定义中剥离。类型是指每一个类模板或函数模板基本上都随着它作用或它所内含的类型而有性质上的变化。
而后template被通俗的称为模板。作用:可以根据用户指定的特定类型或特定值,自动产生一个函数或类。
实现模板:
在学习或是做题中我们经常使用标准库给我们提供的一些模板类(例如:vector、string等),我们从中可以体会到模板类的一些特性,这在我们实现中有一定参考价值。
为方便说明,之后将实现一个二叉树的类模板来解释模板化编程。
-
被参数化的类型
通常在构造二叉树时,需要定义两个类:
typedef int DataType;
class BTNode{
BTNode(DataType data = 0)
:_data(data)
, _leftChild(NULL)
, _rightChild(NULL)
{}
DataType _data;
int _count;
BTNode* _leftChild;
BTNode* _rightChild;
};
class BinaryTree{
// ...
BTNode* _root;
};
如代码所示:BTNode类用来存储节点实值,BinaryTree类用