#include <iostream>
#include <math.h>

class Fint
{

int i;

public:

Fint (int ii) : i(ii) {}

/* Questa funzione (non "friend") definisce un operatore "+" unario, che ritorna (in questo caso) il valore dell'attributo della classe "a" sottratto al valore dell'attributo della classe "b". Da segnalare: la funzione vede come "esterno" l'oggetto che sta a destra dell'operatore ("b").*/

Fint operator+ (const Fint& x)
{

return Fint(i-x.i);

}

/* In questa funzione "friend", l'oggetto che sta a sinistra dell'operatore viene visto della fuction come primo parametro passato, mentre l'operato a destra č il secondo parametro passato.*/

friend Fint operator- (const Fint& x, const Fint& y) ;

void print()
{

cout << i << endl;

}

};

Fint operator- (const Fint& x, const Fint& y)
{

return Fint(x.i + y.i) ;

};

/*Chiaramente, come si puņ notare della definizione degli operatori, l'operatore "+" fa una sottrazione, mentre l'operatore "-" fa una somma.*/

void main ()
{

Fint a(1), b(2);
a = a+b ;
a.print() ;
a = a-b ;
a.print() ;

}