【44】将与参数无关的代码抽离templates
2014-02-10 20:03
344 查看
1、template是产生代码的代码,这就意味着源码看起来很少,生成的目标码大量膨胀。
2、考虑,如果两个方法有重复代码,我们会新建一个方法,把重复的代码放进去,原先两个方法调用第三个方法。如果两个类有重复代码,我们把重复代码移到一个新的类中,通过继承或者复合,避免重复。
3、但是在template中,这种重复是隐晦的,只有一份template代码,可能会生成一系列重复的代码。考虑矩阵模板类,有两个模版形参:矩阵元素的类型T和矩阵的大小S。
4、SquareMatrix<double,5> 和SquareMatrix<double,10> 会实例化两个模板类,这两个模板类有大量重复代码,比如:invert方法。
5、如何解决呢?
建立一个模版父类,把重复的代码放在模版父类中,也就是不再带有矩阵大小S,模版子类增加一个矩阵大小S,同时向父类传递一个指针,指向矩阵的数据,调用模版父类的代码,invert(int size, matrix* pMatrix).
2、考虑,如果两个方法有重复代码,我们会新建一个方法,把重复的代码放进去,原先两个方法调用第三个方法。如果两个类有重复代码,我们把重复代码移到一个新的类中,通过继承或者复合,避免重复。
3、但是在template中,这种重复是隐晦的,只有一份template代码,可能会生成一系列重复的代码。考虑矩阵模板类,有两个模版形参:矩阵元素的类型T和矩阵的大小S。
4、SquareMatrix<double,5> 和SquareMatrix<double,10> 会实例化两个模板类,这两个模板类有大量重复代码,比如:invert方法。
5、如何解决呢?
建立一个模版父类,把重复的代码放在模版父类中,也就是不再带有矩阵大小S,模版子类增加一个矩阵大小S,同时向父类传递一个指针,指向矩阵的数据,调用模版父类的代码,invert(int size, matrix* pMatrix).
相关文章推荐
- Item 44:将与参数无关的代码抽离templates
- effective C++ 条款 44:将与参数无关的代码抽离templates
- Effective C++ -----条款44:将与参数无关的代码抽离templates
- Effective C++ Item 44 将与参数无关的代码抽离 templates
- 条款44:将与参数无关的代码抽离templates
- 《Effective C++》读书笔记之item44:将与参数无关的代码抽离templates
- 条款44:将与参数无关的代码抽离templates
- C++之将与参数无关的代码抽离templates(44)---《Effective C++》
- Effective C++学习_条款44:将与参数无关的代码抽离
- 读书笔记 effective c++ Item 44 将与模板参数无关的代码抽离出来
- Effective C++ Item 44 将与參数无关的代码抽离 templates
- Effective C++:条款44:将与参数无关的代码抽离template
- Effective C++ 44条 将与参数无关的代码抽离templates
- 条款44:将与参数无关的代码抽离template
- 读书笔记《Effective C++》条款44:将与参数无关的代码抽离template
- Effective C++ 条款44 将与参数无关的代码抽离template
- C++ - 将参数无关的代码抽离模板(templates)
- [翻译] Effective C++, 3rd Edition, Item 44: 从 templates(模板)中分离出 parameter-independent(参数无关)的代码(上)
- [翻译] Effective C++, 3rd Edition, Item 44: 从 templates(模板)中分离出 parameter-independent(参数无关)的代码(下)