C++ 模板的编译 以及 类模板内部的实例化

在C++中,编译器在看到模板的定义的时候,并不立即产生代码,只有在看到用到模板时,比如调用了模板函数 或者 定义了类模板的

对象的时候,编译器才产生特定类型的代码。


一般而言,在调用函数的时候,只需要知道函数的声明即可;

在定义类的对象时,只需要知道类的定义,不需要成员函数的定义。


但是,这对于模板编译是不奏效的,模板要进行实例化,则必须能够访问定义模板的源代码,当调用函数模板以及类模板的成员函数

的时候,需要知道函数的定义


标准C++对于模板的编译提供了两种策略:

相同之处:“将类定义以及函数声明放在头文件中,而函数定义以及成员函数的定义放在源文件中”。

不同之处:编译器怎样使用来自源文件的定义。

你可能感兴趣的:(C++,Primer,模板编译)