Non, les {} ne sont pas nécessaire. C'est comme pour un "if"
if (...) cout << "coucou" << endl;
Mais le polymorphisme fonctionne que sur un pointeur. Car dans ton truc:
CMere* t;
Tu créés un tableau d'objet CMere, et non un tableau de pointeur
d'objet CMere. Mais tu ne peux pas accéder a la fonction virtuelle de
CMere.
Si tu déclares "t" par: CFille * t. Ton truc marchera bien.
Mais si tu veux un tableau de pointeur de CMere:
CMere** t = new CMere*[3];
for (int i = 0 ; i < 3 ; ++i)
t[i] = new CFille();
// Puis on appelle la fonction Infos().
for(int i=0;i<3;i++)
t[i].Infos();
// Destruction
for(int i= 0 ; i < 3 ; ++i) delete t[i];
delete[] t;
Remarque: quand tu fais de l'héritage, il faut déclarer les destructeurs "virtual".