在C++中,编译器在看到模板的定义的时候,并不立即产生代码,只有在看到用到模板时,比如调用了模板函数 或者 定义了类模板的
对象的时候,编译器才产生特定类型的代码。
一般而言,在调用函数的时候,只需要知道函数的声明即可;
在定义类的对象时,只需要知道类的定义,不需要成员函数的定义。
但是,这对于模板编译是不奏效的,模板要进行实例化,则必须能够访问定义模板的源代码,当调用函数模板以及类模板的成员函数
的时候,需要知道函数的定义。
标准C++对于模板的编译提供了两种策略:
相同之处:“将类定义以及函数声明放在头文件中,而函数定义以及成员函数的定义放在源文件中”。
不同之处:编译器怎样使用来自源文件的定义。</