C++中模板为什么不支持分离编译

xiaoxiao2021-02-28  119

程序运行的过程

首先我们知道, 一个程序的执行过程分为四个部分,预处理,编译,汇编,链接 下面用一副图来说明

模板的分离编译

这里就是普通的代码,是可以进行分离编译的,但是为什么在模板中就不可以了呢,下面我们来看一段简单的代码,来进行分析

//template.h template<class T> class AA { public: AA(); private: T _a; }; //test.cpp #include "template.h" template<class T> AA<T>::AA() :_a(0) {} //main.cpp #include "template.h" int main() { AA <int> a1; return 0; }

运行结果如下图 为什么会这样呢?这要说一下模板的特点,定义一个模板类,里面的函数只有当调用的时候才会被推演,不调用就不会进行这个推演的过程,也就是说,即使你函数里写的有问题,你编译的时候并没有调用那个函数,编译器是检查不出来的。 所以在使用模板的时候最好不要分离编译

转载请注明原文地址: https://www.6miu.com/read-24832.html

最新回复(0)