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

首先我要介绍分离编译的概念?

一个程序由若干个原文件共同实现,每个源文件单独编译生成目标文件,然后再将所有的目标文件链接起来生成单一的可执行程序的过程.ps.我所理解的分离编译就是不在同一个.h或.cpp文件中定义和实现.

程序编程过程如图所示
这里写图片描述

生成的源文件即在对应的.h和.cpp文件组成编译单元(其中.h的代码被扩展到包含.h的.cpp文件里),然后编译器把.cpp问津编译为目标文件.obj文件(文件中有可执行文件的格式且已经是二进制码的形式),当编译器吧所有的.cpp文件分离编译完成.obj文件,周再由链接器把这些.obj文件链接起来形成可执行文件.exe文件.

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

编译没有实例化,会导致链接错误,即模板函数的代码并不能直接变异成二进制代码,必须有一个实例化的过程.


------text.h----


template<class T>
class A
{
pubclic:
    void fun();
}


------text.cpp----
#include"text.h"
tempalte<class 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值