Per l'overload dell'operatore? Basta fare
#include <iostream>
using namespace std;
class Punto {
public:
Punto();
Punto(double, double);
~Punto();
friend ostream& operator<<(ostream& output, const Punto& p);
double getX();
double getY();
void setX(double);
void setY(double);
Punto sottrazionePunto(Punto&);
private:
double x;
double y;
};
ostream& operator<<(ostream &output, const Punto& p) {
output << "(" << p.x << ", " << p.y << ")";
return output;
}
Punto::Punto(){x = y = 0.0;}
Punto::Punto(double x_, double y_){x = x_; y = y_;}
Punto::~Punto(){cout << "Il punto e' stato distrutto" << endl;}
void Punto::setX(double x_){x = x_;}
void Punto::setY(double y_){y = y_;}
double Punto::getX(){return x;}
double Punto::getY(){return y;}
Punto Punto::sottrazionePunto(Punto &p)
{
Punto risultato;
risultato.setX(x-p.x);
risultato.setY(y-p.y);
return risultato;
}
int main()
{
Punto p1(5,3);
Punto p2(7,4);
cout << "p1 " << p1 << endl;
cout << "p2 " << p2 << endl;
Punto sottrazione = p2.sottrazionePunto(p1);
cout << "p2-p1 = " << sottrazione << endl;
return 0;
}
Invece per l'altro metodo è semplicissimo. Qualcosa come
cout << ... << p1.getX() << ... << p1.getY() << ...;