#include <iostream>
using std::cout;
using std::endl;
class Calc
{
public:
virtual int add(int a, int b) { return(a + b); };
virtual int sub(int a, int b) { return(a - b); };
virtual int mul(int a, int b) { return(a * b); };
};
class Mul : public Calc
{
int mul(int a, int b) {
cout << "class Mul: ";
return(a * b);
};
};
class ABSSub : public Calc
{
int sub(int a, int b) {
cout << "class ABSSub: ";
return(abs(a - b));
};
};
int main(void)
{
Calc *p = new Mul;
cout << p->add(7, 2) << ' ' << p->sub(12, 4) << endl;
cout << p->mul(4, 6) << endl;
p = new ABSSub;
cout << p->add(1, 2) << endl;
cout << p->sub(3, 7) << endl;
cout << p->mul(7, 8) << endl;
return 0;
}
/*
run:
9 8
class Mul: 24
3
class ABSSub: 4
56
*/