/* Fichier This.cpp Pointeur this qui pointe vers l'objet courant */ #include // entrée-sortie standard #include // formatage (présentation) #include using namespace std; // librairie standard class Fraction { private: int numerateur, denominateur; public: Fraction(int, int); Fraction(int); void afficher(string mess); Fraction plusGrand(const Fraction &); }; void Fraction::afficher(string mess){ cout << "Infos de la fraction " << mess << ":\n"; cout << "Son adresse en memoire " << (int) this << endl; cout << "&numerateur vaut : " << (int) &numerateur << endl ; cout << "&denominateur vaut : " << (int) &denominateur << endl ; cout << "&(*this) vaut : " << (int) &(*this) << endl ; cout << "sizeof(*this) vaut " << sizeof(*this) << " octets\n"; cout << " - numerateur : " << numerateur <numerateur = numerateur; this->denominateur = denominateur; } Fraction::Fraction(int numerateur) { *this = Fraction(numerateur, 1); /* = numerateur; denominateur = 1; */ } Fraction Fraction::plusGrand(const Fraction & autre) { if (numerateur*autre.denominateur > denominateur*autre.numerateur) return *this; else return autre; } void continuer() { cout << endl << endl << "Appuyez sur une lettre suivie de Entree " ; char lettre; cin >> lettre ; cout << endl << endl; } int main() { Fraction fr1(1, 2), fr2(3, 4), fr3(6), fr4(5,10); cout << "Adresse de fr1 : " << (int) &fr1 << endl; fr1.afficher("fr1"); fr2.afficher("numero 2"); fr3.afficher("# 3"); fr4.afficher("fr4"); Fraction fr5 = fr2; fr5.afficher("fr5"); Fraction fr6(fr4); fr6.afficher("fr6"); fr1.plusGrand(fr2).afficher("Celle plus grande entre fr1 et fr2"); fr2.plusGrand(fr4).afficher("Celle plus grande entre fr2 et fr4"); continuer(); return 0; } /* Exécution : Adresse de fr1 : 2686632 Infos de la fraction fr1: Son adresse en memoire 2686632 &numerateur vaut : 2686632 &denominateur vaut : 2686636 &(*this) vaut : 2686632 sizeof(*this) vaut 8 octets - numerateur : 1 - denominateur : 2 Infos de la fraction numero 2: Son adresse en memoire 2686624 &numerateur vaut : 2686624 &denominateur vaut : 2686628 &(*this) vaut : 2686624 sizeof(*this) vaut 8 octets - numerateur : 3 - denominateur : 4 Infos de la fraction # 3: Son adresse en memoire 2686616 &numerateur vaut : 2686616 &denominateur vaut : 2686620 &(*this) vaut : 2686616 sizeof(*this) vaut 8 octets - numerateur : 6 - denominateur : 1 Infos de la fraction fr4: Son adresse en memoire 2686608 &numerateur vaut : 2686608 &denominateur vaut : 2686612 &(*this) vaut : 2686608 sizeof(*this) vaut 8 octets - numerateur : 5 - denominateur : 10 Infos de la fraction fr5: Son adresse en memoire 2686600 &numerateur vaut : 2686600 &denominateur vaut : 2686604 &(*this) vaut : 2686600 sizeof(*this) vaut 8 octets - numerateur : 3 - denominateur : 4 Infos de la fraction fr6: Son adresse en memoire 2686592 &numerateur vaut : 2686592 &denominateur vaut : 2686596 &(*this) vaut : 2686592 sizeof(*this) vaut 8 octets - numerateur : 5 - denominateur : 10 Infos de la fraction Celle plus grande entre fr1 et fr2: Son adresse en memoire 2686696 &numerateur vaut : 2686696 &denominateur vaut : 2686700 &(*this) vaut : 2686696 sizeof(*this) vaut 8 octets - numerateur : 3 - denominateur : 4 Infos de la fraction Celle plus grande entre fr2 et fr4: Son adresse en memoire 2686712 &numerateur vaut : 2686712 &denominateur vaut : 2686716 &(*this) vaut : 2686712 sizeof(*this) vaut 8 octets - numerateur : 3 - denominateur : 4 Appuyez sur une lettre suivie de Entree */