现在的位置: 首页 > 综合 > 正文

[C/C++不常见语法特性]_[模板编译模式]

2014年02月08日 ⁄ 综合 ⁄ 共 393字 ⁄ 字号 评论关闭

1.最近写了一些模板函数,报着想不变动头文件的常规做法把模板的实现放到了.cpp里,发现编译不过。

2.查了下 C++ Primer,是有这么一个语法特性,可以在实现文件里定义模板,但是目前没有编译器支持,仔细想想也是,C++的模板只有在调用时才能确定类型,生成C++实例源函数,如果.cpp里放入了定义,在编译时,如果没有调用,如何生成确定类型的实例,所以如果要支持,肯定要编译器对这种情况额外处理。所以因此基本上没有编译器支持。

模板编译模式有两种
1.包含编译模式,在头文件里声明并定义.
2.分离编译模式,在头文件里声明,在实现文件里定义[不过这个gcc 4.4都不支持]

.h
template <typename Type> 
Type min( Type t1, Type t2 );

.cpp
export template <typename Type>
Type min( Type t1, Type t2 ) { /* ...*/ }

抱歉!评论已关闭.