|
发表于 2020-9-2 21:30:02
|
显示全部楼层
我正在学C++模板,对模板已经有一定的了解了,看到C++ templates,boost,loki不想看了。主要就是我觉得这个模板用处不广。但是心里有有愧,所以今天搜一下,居然搜到了这里有人讨论。确实给我指了方向。
综合上面大家发言,我得出这样一个结论:
OO的应用就是描述这样一个东西。人能吃饭,我是人,所以我能吃饭,又由于虚拟的存在,每个人吃饭方式还能不一样。要OO就必须是同类,OO实现的是同种类行为的压缩。
而GP说的是,你能吃饭,我也能吃饭,哪怕我们没什么关系。人能吃饭,狗也能吃饭,甚至机器也要吃饭。能吃饭的我可以让他们都在这里吃饭。GP就不管你哪个类型,GP实现的是不同种类行为的压缩。
这两个东西,一个纵向,一个横向,并不矛盾。OO是万能的,OO能做的GP不能做,GP能做的OO别别扭扭的也能做(不同类的哥哥让你们同类,Java.NET,以前就没GP,应该都属于此类吧),但这样消耗的就是性能、清晰度和可维护性。所以有的事情还是要GP来做,特别是在跨类型压缩需求很高的情况下,甚至是类型无穷多,这种情况不用GP麻烦得要死,让我们自己给每个类继承一堆接口太麻烦,还是不继承直接用(GP的用武之地)比较好。必须让编译器帮我们写程序(我觉得GP本质上都是编译器帮我们写程序——实例化)。
其实宏也能GP,template是更聪明点更省编码者事更安全的GP。
具体到实际开发中,毫无疑问,要面向无穷多类型的就是我们工作基于的通用库,所以GP这里用的多;而我们具体针对每个企业应用开发的项目都基本上很少用到这个GP。没那么多同行为的不同类型呀!我们的开发中可遇不到“狗和人都吃饭”的情况,而大部分都是“这个人和那个人吃饭的情况”。而且代码逻辑,是变动最大的部分。和GP距离太远了。 |
|