c类模板实例化例子 c 语言教程
这个特性称为导出模板,第一个模拟考试模板。它的功能是使模板代码与.H中的C/C语言分离和.Cpp文件分开,减少冗长的模板编译时间。否则,模板实例需要在不同的编译单元中实例化。导出模板以前是写进c98标
这个特性称为导出模板,第一个模拟考试模板。它的功能是使模板代码与.H中的C/C语言分离和.Cpp文件分开,减少冗长的模板编译时间。否则,模板实例需要在不同的编译单元中实例化。导出模板以前是写进c98标准的,但是很少有主流编译器支持这个特性。在最新的c11标准中,它已经被删除,并被使用extern关键字替换,以防止编译器在编译单元中实例化特定的模板。导出模板的实现原理摘自《C模板编程的深入实践》。
这有点类似于C编译器处理全局类对象实例构造的过程。它们需要在主函数之前构造。然而,现代编译器的常见模板实现是在编译单元中当场生成实例,然后随机选择其中一个重复实例进行链接。然而,为了支持导出模板,需要对现有的编译器进行很大的修改。考虑到人力和时间成本,以及替代方法,导出模板被大多数编译器放弃。所以C的模板库必须是开源的^
函数模板定义一组函数模板<class T>T*testfun(T*SRC){return(SRC)}实例化模板函数int m[10]int*P=testfun<int>(m)类模板定义一组类模板<class T>class testclass{public:T*testfunc(t*SRC)}实例化类模板char first ch[10]TestClass<char> achar*p=a.testfunc(ch)