/* IFT1169 - démonstration #02 - exercice 02 30-janvier -2006 v1.00 M.Lokbani - màj pour IFT1169 + gcc3.4.2 exemple pris de H. Garreta contact: lokbani@iro.umontreal.ca Copyright (C) 1999-2006 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- Description: ------------ Que va afficher en sortie le programme suivant. Essayer de répondre à la question sans vous aider par votre compilateur. */ #include using namespace std; class Animal { public: virtual void uneFonction() { // il faut au moins une fonction virtuelle // (car il faut des classes polymorphes) } }; class Mammifere : public Animal { }; class Chien : public Mammifere { }; class Caniche : public Chien { }; class Chat : public Mammifere { }; class Reverbere { }; int main(){ Animal *ptr = new Caniche; cout << typeid(ptr).name() << '\n'; cout << typeid(*ptr).name() << '\n'; cout << "L'animal pointée par ptr " << (typeid(*ptr) == typeid(Chien) ? "est" : "n'est pas") << " un chien\n"; cout << "L'animal pointée par ptr est un " << typeid(*ptr).name() << "\n"; return 0; } /* Faire gaffe lors de l'utilisation de typeid. typeid(ptr) et typeid(*ptr) ce n'est pas la même chose. Un objet et un pointeur sur un objet. >1169demo02exo2sol P6Animal 7Caniche L'animal pointée par ptr n'est pas un chien L'animal pointée par ptr est un 7Caniche >Exit code: 0 */