C++的template,太过强大而不能大众化

本文探讨了C++模板编程的特点及挑战,将其与Java模板进行了对比,并讨论了它与面向对象编程的不同之处。作者还分享了自己使用C++模板的实际经验。

        说实话,对template没有太多的研究,包括c++和java的template编程范式。java的template和c++相比,简直就不值得一提,语言基础不同,机制也不同。

        c++的template,给使用者提供了另外一种编程范式,这也就导致了template的编程思维模式和面向对象的思维模式的不同,因为其思维的抽象层次不同。这是对掌握面向对象技术的程序员来讲,是一个挑战。

        但是,template为了达到它的这种强大,而它的内部的静态编译机制,导致语法上的超级复杂,变成了一个有超级能力的魔兽。就像二战期间希特勒研制的超级大炮,强大,同时庞大。

        template用的好,就像玩魔术一般,一小段代码就可以完成一个抽象层面很高的业务逻辑,但是这需要很深的逻辑思考能力,更需要更好的掌握template技术。

        但是,template的强大,却无法跟得上lisp语言中的宏。就像一个凡间的英雄,毕竟无法低得上仙界的一个小童。因为,纵然莲花有出淤泥而不染的高洁,却还是不得不生长于淤泥一般。因为c++语言本身的静态性的局限,让template只能在静态编译上穷尽智慧。

        如果您看过《深入浅出MFC》这本书,也会被微软的牛人把c的宏用的那么出神入化而惊叹不已,那可是纯粹的文本替换。这一点看法用到template上,也不为过。

        上次使用template还是是08、09年,在c++写的服务器中使用过template编写。手头上有一个c++项目,二期需要增加新的硬件支持,业务逻辑比较类似,为了不在业务纵向上增加复杂度,同时尽量保持代码的简洁性,目前来看,template是一个比较好的技术选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值