用于函数的与或非 函数

来源:互联网 发布:深圳迈瑞工资待遇知乎 编辑:程序博客网 时间:2024/04/30 09:13
// and_or.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;// restrain FuncL and FuncR must be bool(*)()template<typename FuncL , typename FuncR>class And{FuncL m_func_l;FuncR m_func_r;public:And(FuncL f1 , FuncR f2):m_func_l(f1),m_func_r(f2){}bool operator()(){return m_func_l() && m_func_r();}};template<typename FuncL , typename FuncR>And<FuncL , FuncR> and(FuncL f1 , FuncR f2){return And<FuncL,FuncR>(f1,f2);}template<typename FuncL , typename FuncR>class Or{FuncL m_func_l;FuncR m_func_r;public:Or(FuncL f1 , FuncR f2):m_func_l(f1),m_func_r(f2){}bool operator()(){return m_func_l() || m_func_r();}};template<typename FuncL , typename FuncR>Or<FuncL , FuncR> or(FuncL f1 , FuncR f2){return Or<FuncL,FuncR>(f1,f2);}template<typename Func>class Not{Func m_func;public:Not(Func f):m_func(f){}bool operator()(){return !m_func();}};template<typename Func>Not<Func> not(Func f){return Not<Func>(f);}bool f1(){return true;}bool f2(){return false;}bool f3(){return true;}int _tmain(int argc, _TCHAR* argv[]){cout<<not(and(or(f2,f3),f1))()<<endl;return 0;} 


 

原创粉丝点击