#include "Base1.hpp"
#include "Base2.hpp"

#ifndef _DERIV_INCLUDED_
#define _DERIV_INCLUDED_

class Deriv : public Base1, public Base2
{
private:
        int x, y;
public:
        //Constructori ...
        Deriv(void);
        Deriv(Deriv const &);
        Deriv(int , int);
        Deriv(Base1 const &);
        Deriv(Base2 const &);
        //Destructor.
        virtual ~Deriv();
        //Supradefinirea unor operatori.
        Deriv & operator =(Deriv const &);
        Deriv operator +(Deriv const &) const;
        //Operatorul functie (adica ()) declarat ca virtual.
        virtual int operator ()(int);
        //Operatorul declarat virtual este supradefinit fara a fi virtual
        int operator ()(int, int);
        //Supradefinirea operatorilor de extractie si insertie.
        friend istream & operator >>(istream &, Deriv &);
        friend ostream & operator <<(ostream &, Deriv const &);
};

#endif
