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 ?
Partager