首先需要认知以下几点 :
- 编译器只编译cpp文件,不单独编译.h文件
- 编译器在编译阶段是独立编译的
- 编译一个cpp文件时,展开包含的头文件,发现一个调用在当前文件无法找到,就标记为一个符号
- 类模板产生的符号跟该模板的任何具体类的符号都不同
代码:
假设三个文件分别是Temp.h Temp.cpp main.cpp(我们举最简单的栗子以方便理解)
//Temp.h
template<typename Type>
class CTemp
{
CTemp();
};
//Temp.cpp
#include "Temp.h"
template<typename Type>
CTemp<Type>