Les différences entre les cast c++ et c
Bonjour, cela fait maintenant quelques mois que je fais du c++ et je n'ai toujours pas utilisé les cast du c++. Ma question sera donc : Quel est l'avantage d'un cast à la c++ (par rapport aux casts du c) mis à part l'erreur bad_cast qui peut être lancée.
De plus, dans cette situation (C'est une situation simplifiée):
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 29 30 31 32 33 34 35 36 37 38 39
| #include <iostream>
#include <vector>
class Polygone
{
protected :
int nb_cote;
public :
Polygone(int nb){nb_cote=nb;}
virtual void show(){std::cout<<"\n"<<nb_cote;}
};
class Carre : public Polygone
{
private :
int size;
public :
Carre(int s): Polygone(4){size=s;}
void show(){std::cout<<"\n"<<nb_cote<<" "<<size;}
void set_length(int len){size=len;}
};
int main()
{
Carre car(20);
Polygone pol(3);
std::vector<Polygone*>mes_objets;
mes_objets.push_back(&car);
mes_objets.push_back(&pol);
mes_objets[0]->show();
mes_objets[0]->set_length(40);//Erreur de compilation
Carre*pt=(Carre*)mes_objets[0];//Ne pose pas de Problèmes (cast à la C) peut etre remplacer par dynamic_cast sans probleme
pt->set_length(40);
mes_objets[1]->show();
} |
Quel serait l'avantage d'un dynamic cast ? Le cast à la C sera t-il résolut à la compilation ? Si oui, sera t-il plus rapide ?