C++中模板为什么不支持分离编译
2017-08-05 15:12
477 查看
程序运行的过程
首先我们知道, 一个程序的执行过程分为四个部分,预处理,编译,汇编,链接下面用一副图来说明
模板的分离编译
这里就是普通的代码,是可以进行分离编译的,但是为什么在模板中就不可以了呢,下面我们来看一段简单的代码,来进行分析//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; }
运行结果如下图
为什么会这样呢?这要说一下模板的特点,定义一个模板类,里面的函数只有当调用的时候才会被推演,不调用就不会进行这个推演的过程,也就是说,即使你函数里写的有问题,你编译的时候并没有调用那个函数,编译器是检查不出来的。
所以在使用模板的时候最好不要分离编译
相关文章推荐
- 解析C++中为什么模板不支持分离编译?
- 【C++】为什么模板不支持分离编译
- 【C++】模板简述(四):模板为什么不支持分离编译?
- C++中模板为什么不支持分离编译
- C++ 为什么模板不支持分离编译?
- 【c++】模板为什么不支持分离编译
- c++:为什么模板不支持分离编译?
- c++中为什么不支持模板分离编译
- C++ 中为什么模板不支持分离编译?
- 为什么模板不支持分离编译?
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么模板不支持分离编译?
- 为什么模板不支持分离编译
- c++-模板不支持分离编译错误分析
- 模板为什么不支持分离编译?
- 为什么模板不支持分离编译
- C++ 模板为什么不能分离编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- C++的类模板的问题(实现文件和头文件放在一起), 因为模板不支持分离编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译