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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?