#include /* Pour les déclarations ci-dessus dites si elles sont correctes ou incorrectes et dans les deux cas justifier votre réponse. */ 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(){ Chien medor; Animal *ptr = &medor; Mammifere *p0 = ptr; // correcte ou incorrecte? Mammifere *p1 = dynamic_cast(ptr); // correcte ou incorrecte? Caniche *p2 = dynamic_cast(ptr); // correcte ou incorrecte? Chat *p3 = dynamic_cast(ptr); // correcte ou incorrecte? Reverbere *p4 = dynamic_cast(ptr); // correcte ou incorrecte? /* L'opérateur dynamic_cast s'applique également aux références. L'explication est la même, sauf qu'en cas d'impossibilité d'effectuer la conversion, cet opérateur lance l'exception bad cast. */ Animal &ref = medor; Mammifere &r1 = dynamic_cast(ref); // correcte ou incorrecte? Caniche &r2 = dynamic_cast(ref); // // correcte ou incorrecte? return 0; }