/* IFT1166 - démonstration #7 - exercice 16 05-novembre -2005 v1.02 M.Lokbani MàJ pour A05 11-octobre -2003 v1.01 M.Lokbani gcc3.2 + comments 05-octobre -1999 v1.00 M.Lokbani énoncé & correction contact: lokbani@iro.umontreal.ca Le but de cet exercice est de vous pratiquer à la conception d'une classe. Ses constructeurs et son destructeur. Copyright (C) 1999-2005 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- */ #include #include using namespace std; // on affiche aussi l'adresse de l'objet. Cela va nous permettre de mieux voir // le déroulement des opérations de construction et de destruction des objets // pour une meilleure description voir l'affichage en sortie class date { private: // facultatif si en tete int jour; int mois; int annee; public: date (int jour,int mois, int annee); // constructeur initialiseur date (void); // constructeur par défaut ~date (void); // destructeur void affiche_date (void); // fonction membre }; // constructeur initialiseur date::date(int j,int m,int a) { jour = j; mois = m; annee = a; cout << "constructeur initialiseur Obj: " << this << " " \ << setw(2) << setfill('0') << jour << "/" << setw(2) \ << setfill('0') << mois << "/" << annee << endl; affiche_date(); } // constructeur par défaut date::date(void) { cout << "constructeur par défaut Obj: " << this << endl; } // destructeur date::~date(void) { cout << "destructeur obj " << this << " " << setw(2) << setfill('0') \ << jour << "/" << setw(2) << setfill('0') << mois << "/" << annee << endl; affiche_date(); } void date::affiche_date (void) { cout << "Obj " << this << " jour: " << jour << " mois: " \ << mois << " année: " << annee << endl; } int main () { date fetes[2]; // 2 constructeurs par défaut date nouvel_an(1,1,2000); // constructeur init + affichage date travail(4,9,2000); // constructeur init + affichage fetes[0] = nouvel_an; fetes[1] = travail; fetes[0].affiche_date(); // affichage // Question en plus: que se passe t-il si on a un espace alloue par un constructeur // au moment de la recopie ? => l'opérateur de recopie date(const &date) return 0; } /* Ce que vous obtenez en sortie est comme suit: >demo7exo16sol constructeur par défaut Obj: 0x22ff4c constructeur par défaut Obj: 0x22ff58 constructeur initialiseur Obj: 0x22ff3c 01/01/2000 Obj 0x22ff3c jour: 1 mois: 1 année: 2000 constructeur initialiseur Obj: 0x22ff2c 04/09/2000 Obj 0x22ff2c jour: 4 mois: 9 année: 2000 Obj 0x22ff4c jour: 1 mois: 1 année: 2000 destructeur obj 0x22ff2c 04/09/2000 Obj 0x22ff2c jour: 4 mois: 9 année: 2000 destructeur obj 0x22ff3c 01/01/2000 Obj 0x22ff3c jour: 1 mois: 1 année: 2000 destructeur obj 0x22ff58 04/09/2000 Obj 0x22ff58 jour: 4 mois: 9 année: 2000 destructeur obj 0x22ff4c 01/01/2000 Obj 0x22ff4c jour: 1 mois: 1 année: 2000 >Exit code: 0 */