c++ Policy-based design
2017-02-10 17:29
381 查看
基于Policy和基于traits都是一样的,只是感觉Policy倾向于行为提取,traits倾向于类型提取。好像还有一种名词:Aspect-oriented programming,不过感觉都有相同的意义。
举个实例:计算加减乘除,常规方法是定义一个抽像计算的基类,然后派生出各种具体计算类…就不多说了。
下面使用Policy方法,实现一把:
举个实例:计算加减乘除,常规方法是定义一个抽像计算的基类,然后派生出各种具体计算类…就不多说了。
下面使用Policy方法,实现一把:
#include<iostream> template<typename T> class Add { public: typedef T valueType; static T calc(const T& a, const T& b) { return a + b; } }; template<typename T> class Sub { public: typedef T valueType; static T calc(const T& a, const T& b) { return a - b; } }; //此处略了 乘/除,方式大致同上 // template<typename OP> class Calculator :protected OP { typedef typename OP::valueType valueType; valueType a_; valueType b_; public: explicit Calculator(valueType a, valueType b) :a_(a), b_(b) {} valueType getResult() { return OP::calc(a_, b_); } }; int main() { Calculator<Add<int>> Calc(1, 2); std::cout << Calc.getResult() << std::endl; Calculator<Sub<float>> Calc2(3.9, 1.4); std::cout << Calc2.getResult() << std::endl; return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- myTemplate模板引擎
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析