记录笔记原则:
1.用简单易懂的语言叙述自己的理解,避免照搬原文
2.用实例说明,避免空洞
3.多做总结和横向对比,避免片面
模板与泛型编程的关系
模板是泛型编程的基础、实现手段;
函数模板
template <typename T>
int compare(const T &v1, const T &v2);
调用函数模板时,编译器首先确定模板实参替换模板形参,然后重新编写函数,并编译;
类模板
template <class T> class A {
};
模板形参中,typename <=> class 两者等价;
编写泛型代码的两个原则
1.模板的形参是const &;
2.函数体中只使用< 比较;
类模板不定义类型
类模板不定义类型,只有实例化才定义了类型;
Queue不是类型,Queue<int>是类型;
模板编译模型
编译器在调用模板时,进行实例化,所以必须知道函数定义;
两种模型:
1.包含模型:在模板定义的头文件中添加include "..cpp"代码,包含模板定义的源文件;
2.分别编译模型:添加export声明;
模板特化
跳过;