模板
泛型编程的语言支持机制就是模板——参数化类型。
# 1 模板函数
调用过程是,先将函数模板实例化为函数,然后再发生函数调用。
# 1.1 函数模板与函数重载
普通函数会进行隐式的数据类型转换, 函数模板不提供隐式的数据类型转换,必须是严格的匹配。
- 当函数模板和普通函数都符合调用时,优先选择普通函数
- 若显示使用函数模板,则使用<> 类型列表
- 如果函数模板产生更好的匹配,使用函数模板
# 1.2 编译器对模板机制剖析
- 编译器并不是把函数模板处理成能够处理任意类的函数
- 编译器从函数模板通过具体类型产生不同的函数
- 编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译;在调用的地方对参数替换后的代码进行编译。
# 2 模板类
模板类派生普通类 子类从模板类继承的时候,需要让编译器知道父类的数据类型具体是什么(数据类型的本质:固定大小内存块的别名)
模板类派生模板类 无需指定模板T类型
实现模板方法建议在同一个文件.h中完成