参数化

:::info template机制帮助我们将类定义中“与类型相关”和“独立于类型之外”的两部分分离开来

  • 在一个模板类中,于类型相关的部分会被抽取出来,形成一个或者多个参数 :::
    1. template <typename valType> //参数化
    2. class BTnode{
    3. public:
    4. private:
    5. valType _val;
    6. int _cnt;
    7. BTnode* _lchild;
    8. BTnode* _rchild;
    9. };

    class template 的定义

    为模板类定义一个inline函数,在类内的定义和非模板类中的情况相同,但是在类外定义却有所区别
    1. template <typename elemType>
    2. inline BinaryTree<elemType>::
    3. BinaryTree():_root(0)
    4. {}
    :::info class scope运算符中BinaryTree需要对模板类型加以限定;之后就被认为处在class范围内,因此定义时不需要对后面的BinaryTree()加限定 :::