当我们处理template类型时,我们无法得知用户实际要用的类型是否为语言的内置类型 :::tips 比如对内置的数据类型,如int,可以通过传值的方式进行传输;
    对于class,为了节省开销,通常采用传址的方式进行赋值; ::: :::info 对于template class中的函数,当不知道类型时,建议是采用const reference的形式进行传输 :::

    此外在constructor中,一般是采用member initialization list的形式对参数进行初始化

    1. template <typename valType>
    2. inline BTnode<valType>::
    3. BTnode(const valType &val):_val(val)
    4. {
    5. _cnt=1;
    6. _lchild=_rchild=0;
    7. }

    :::tips 不选择在函数体内进行_val=val
    原因如下:
    若_val的数据类型是一个类
    constructor内部对_val的赋值操作可以分解成两个步骤:

    • class的默认构造函数会作用在_val上,
    • 函数体内会以copy assignment operator将val赋值给_val

    但是若是采用member initialization list的方法,则会直接用copy constructor给_val初始化; :::