#include <iostream> #include <string> using namespace std; class math { public: math(){} virtual ~math(){} virtual void add()=0; }; class ADD1 : public math { public: ADD1(){} virtual ~ADD1(){} void add() { cout<<"the first type of add"<<endl; } }; class ADD2 : public math { public: ADD2(){} virtual ~ADD2(){} void add() { cout<<"the second type of add"<<endl; } }; class calculate { public: calculate(){} ~calculate(){} void set_alg(math *p) { p_math=p; } void operation() { p_math->add(); } protected: math *p_math; }; int main() { calculate *p_cal=new calculate; math *p_add1=new ADD1; math *p_add2=new ADD2; p_cal->set_alg(p_add1); p_cal->operation(); p_cal->set_alg(p_add2); p_cal->operation(); delete p_add2; delete p_add1; delete p_cal; system("pause"); return 0; }