typeid et ses drôles de types
Bonjour,
Je suis les cours de C++ : http://cpp.developpez.com/cours/polyCpp/#LIV-I-2
Je compile sur Code::Blocks ce code :
.hpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #ifndef IV-I-2_HeaderFile
#define IV-I-2_HeaderFile
class Animal {
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 {
};
#endif |
.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| /* Utilisation de typeid*/
#include <iostream>
#include <conio.h> // Permet d'utiliser getch()
#include <typeinfo>
#include "IV-I-2.hpp"
using namespace std;
int main() {
Animal *ptr = new Caniche;
cout << typeid(ptr).name() << '\n';
cout << typeid(*ptr).name() << '\n';
cout << "L'animal pointe par ptr "
<< (typeid(*ptr) == typeid(Chien) ? "est" : "n'est pas")
<< " un chien\n";
cout << "L'animal pointe par ptr est un "
<< typeid(*ptr).name() << "\n";
return getch();
} |
et j'ai pour rendu ceci :
Code:
1 2 3 4
| P6Animal
7Caniche
L'animal pointe par ptr n'est pas un chien
L'animal pointe par ptr est un 7Caniche |
au lieu d'avoir cela :
Code:
1 2 3 4
| Animal *
Chien
L'animal pointé par ptr n'est pas un chien
L'animal pointé par ptr est un Caniche |
Please tell me why...