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

本文探讨了C++中不常见的模板编译模式问题,尤其是尝试将模板函数的实现放在.cpp文件时遇到的挑战。由于C++模板的特性,需要在调用时确定类型,因此大部分编译器不支持在实现文件中定义模板。模板编译模式通常分为两种:包含编译模式(在头文件中声明并定义)和分离编译模式(在头文件中声明,实现文件中定义,但并非所有编译器都支持)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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 ) { /* ...*/ }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peter(阿斯拉达)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值