C++模板的实现本质类似于宏替换
来源:互联网 发布:前端后端区别知乎 编辑:程序博客网 时间:2024/05/16 06:30
最近看C++模板看得头疼,C++就是复杂啊。正因为强大,功能多,才会复杂。一个类模板的继承问题我搞了半天才明白。最后发现一点:C++模板的实现本质类似于宏替换!记住这点后,便豁然开朗,接下来看模板内容,有如神助。
我们来看这段代码,我们定义个函数模板:
template <class Type>void Swap(Type &T1,Type &T2){Type temp = T1;T1 = T2;T2 = temp;}
这段再简单不过了,如果我们不用模板,要怎么实现让这个交换函数能交换所有的数据类型呢?
我们这样来写代码:
#define Type intvoid Swap(Type &T1,Type &T2){Type temp = T1;T1 = T2;T2 = temp;}
OK,实现了,如果想让这个交换函数支持什么数据类型,就改一下#define Type int即可,比如#define Type char后我们的交换函数就能交换char类型数据了。
那么现在就比较好理解了吧,模板的本质,就是自动的帮我们完成了这么一个宏替换的过程。当我们调用函数模板时,根据我们传入的数据类型,比如我们传入int类型变量,它就自动把函数模板中的Type替换成int,然后调用。
总结下来区别就是,模板的替换过程是自动、局部的,#define宏的替换过程是手动、全局的。模板的实现本质实际上就是数据类型的替换。理解了这点以后,再来看模板,就简单了。
- C++模板的实现本质类似于宏替换
- 用模板实现类似于参数调用的效果
- 类似于repalce的位的替换
- 用C语言实现类似于JAVA readLine()的功能
- 悟: c实现类似于c++面向对象的功能
- C语言实现类似于C++的Vector容器
- 类似于printf的lcd_debug实现
- C的宏定义实现模板函数——C的C++模板函数机制实现
- 模板替换的问题
- 类似于smarty之类的模板引擎的模板引擎原型
- 类似于smarty之类的模板引擎的模板引擎原型
- c语言实现字符串字串的替换
- [c++]栈模板的实现
- string的字符串替换函数,类似于CString的Replace
- 类模板语言的变量替换~简易java实现
- PHP 替换WORD模板 实现可直接打印的WORD
- C++:宏替换的误区
- Android中使用反射实现类似于C语言指针的调用
- HTML杂学1
- [流媒体]Android 实时视频采集—MediaRecoder录制
- [多媒体]android MediaRecoder 实现录像机
- GPS通讯协议1
- Mac下Latex中文字体配置
- C++模板的实现本质类似于宏替换
- java程序员面试交流项目经验
- NBUT 2013 Timed NOJ Training #003 C题 日期天数换算
- 杂谈: flash player 11.7 意义何在?
- Sqlplus导出excel文件
- javaWeb -- XML详细介绍
- 使用SQLPLUS生成HTML报表
- eclipse文件比较
- ACM--吃罐头