菜鸟笔记
提升您的技术认知

c 模板类声明头文件和实现文件分离,如何编译?-ag真人游戏

创建的对象 是属于模板类实例化后的类的,而不是属于模板类的。换言之模板类不进行实例化就不能创建对象。

《c template》第六章讲过这个问题
组织模板代码有三种方式:
1.包含模型(常规写法 将实现写在头文件中)
2.显式实例化(实现写在cpp文件中,使用template class语法进行显式实例化)
3.分离模型(使用c export关键字声明导出)

第三种方式理论最优,但是实际从c 标准提出之后主流编译器没有支持过,并且在最新的c 11标准中已经废除此特性,export关键字保留待用。
那么实际上能够使用的实现分离也就只有显式实例化

比较有意思的是,《c template》书中作者建议代码为分离模型做准备,等待编译器支持之后替换,没想到最终这个特性被c 标准废弃了。

网站地图