#include <iostream>
#include <math.h>
using namespace std;
class operators
{
public:
virtual float calculate(float ,float=0)=0;
};
class mainopr

ublic operators
{
public:
// char ch;
virtual float calculate(float ,float)=0;
};
class mathfunc

ublic operators
{
public:
//char name[4];
virtual float calculate(float)=0;
};
class plus

ublic mainopr
{
public:
virtual float calculate(float right,float left){return left+right;}
};
class minus

ublic mainopr
{
public:
virtual float calculate(float right,float left){return left-right;}
};
class multiplication

ublic mainopr
{
public:
virtual float calculate(float right,float left){return left*right;}
};
class division

ublic mainopr
{
public:
virtual float calculate(float right,float left){return left/right;}
};
int main()
{
mainopr *m=new plus;
operators *p=m;
cout<<p->calculate(2,3);
return 0;
}