1、template是产生代码的代码,这就意味着源码看起来很少,生成的目标码大量膨胀。

2、考虑,如果两个方法有重复代码,我们会新建一个方法,把重复的代码放进去,原先两个方法调用第三个方法。如果两个类有重复代码,我们把重复代码移到一个新的类中,通过继承或者复合,避免重复。

3、但是在template中,这种重复是隐晦的,只有一份template代码,可能会生成一系列重复的代码。考虑矩阵模板类,有两个模版形参:矩阵元素的类型T和矩阵的大小S。

4、SquareMatrix<double,5> 和SquareMatrix<double,10> 会实例化两个模板类,这两个模板类有大量重复代码,比如:invert方法。

5、如何解决呢?

  建立一个模版父类,把重复的代码放在模版父类中,也就是不再带有矩阵大小S,模版子类增加一个矩阵大小S,同时向父类传递一个指针,指向矩阵的数据,调用模版父类的代码,invert(int size, matrix* pMatrix).

最新文章

  1. JavaScript 框架设计(二)
  2. MediaCodec Name &amp; Type
  3. [转]backbone.js template()函数
  4. Spring Autowired错误???
  5. css的一种预处理器 sass
  6. GoDaddy自动续费信用卡被扣款后的退款方法
  7. Android 4.0 事件输入(Event Input)系统
  8. postgreSQL初步使用总结
  9. selenium python (三)鼠标事件
  10. 通过spring来配置某个命令号和执行方法之间的映射
  11. less学习-浏览器端编译(一)
  12. 谈谈MySQL数据表的类型(转)
  13. 微信小程序 - 自定义创建
  14. Python玩转硬件:TPYBoard-Micropython开发板大盘点
  15. 用LSTM分类 MNIST
  16. macof python攻击脚本
  17. 和初学者交流学习java语言一些体会。
  18. jpa的查询语法
  19. ASCII对照表
  20. volatile是否就是原子性/线程同步的

热门文章

  1. poj3308Paratroopers(dinic)
  2. poj 3321 Apple Tree(一维树状数组)
  3. bzoj2324
  4. [原]Unity3D深入浅出 - 物理引擎之刚体部件(Rigidbody)
  5. javascript在页面head内动态插入style
  6. html的视频插件 (转)
  7. Java [leetcode 27]Remove Element
  8. 【转】java枚举类型enum的使用
  9. PostgreSql与sqlserver对比杂记
  10. 使用ServiceStackRedis链接Redis简介