#include "A.h" //-- A::A(int v) { _v = v; cout << "A::A(int v)" << endl; } //-- A::A(const A& anA) { _copy(anA); cout << "A::A(const A& anA)" << endl; } //-- A& A::operator=(const A& anA) { if (this != &anA) { _destroy(); _copy(anA); } return *this; } //-- A::~A(void) { _destroy(); cout << "A::~A(void)" << endl; } //-- bool operator==(const A& anA1, const A& anA2) { return anA1.isEqualTo(anA2); } //-- bool operator!=(const A& anA1, const A& anA2) { return !(anA1==anA2); } //-- //A operator+(const A& anA1, const A& anA2) A operator+(A anA1, A anA2) { printf("anA1=%p anA2=%p\n", (void*)&anA1, (void*)&anA2); cout << "Debut A operator+" << endl; A anA; anA._v = anA1._v + anA2._v; cout << "Fin A operator+" << endl; return anA; } //-- ostream& operator<<(ostream& os, const A& anA) { anA.display(os); return os; } //-- void A::display(ostream& os) const { (void)os; // Pour eviter un warning si pas utilise // Affichage des attributs de la classe A os << _v; } //-- bool A::isEqualTo(const A& anA) const { (void)anA; // Pour eviter un warning si pas utilise // Test des attributs de la classe A if (_v != anA._v) return false; return true; } //-- void A::_copy(const A& anA) { (void)anA; // Pour eviter un warning si pas utilise // Affectation des attributs de la classe A _v = anA._v; } //-- void A::_destroy(void) { // Destruction des attributs de la classe A // Aucun }