#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() ;}