C++模板的实现本质类似于宏替换

最近看C++模板看得头疼,C++就是复杂啊。正因为强大,功能多,才会复杂。一个类模板的继承问题我搞了半天才明白。最后发现一点:C++模板的实现本质类似于宏替换!记住这点后,便豁然开朗,接下来看模板内容,有如神助。

我们来看这段代码,我们定义个函数模板:

template <class Type>
void Swap(Type &T1,Type &T2)
{
	Type temp = T1;
	T1 = T2;
	T2 = temp;
}

这段再简单不过了,如果我们不用模板,要怎么实现让这个交换函数能交换所有的数据类型呢?

我们这样来写代码:

#define Type int
void Swap(Type &T1,Type &T2)
{
	Type temp = T1;
	T1 = T2;
	T2 = temp;
}

OK,实现了,如果想让这个交换函数支持什么数据类型,就改一下#define Type int即可,比如#define Type char后我们的交换函数就能交换char类型数据了。

那么现在就比较好理解了吧,模板的本质,就是自动的帮我们完成了这么一个宏替换的过程。当我们调用函数模板时,根据我们传入的数据类型,比如我们传入int类型变量,它就自动把函数模板中的Type替换成int,然后调用。

总结下来区别就是,模板的替换过程是自动、局部的,#define宏的替换过程是手动、全局的。模板的实现本质实际上就是数据类型的替换。理解了这点以后,再来看模板,就简单了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值