question de code pure sur const_cast
Bonjour
J'ai un bout de code suivant:
Code:
1 2 3 4 5 6 7 8 9 10
| template <class T>
class TauPtr
{
virtual bool operator == (const T* right) const;
virtual bool operator == (T* right) const {return operator == (const_cast<const T*>(right));}
virtual bool operator == (int right) const {return right == 0 && _ptr == 0;} // pour comparaison avec NULL
..} |
D'après ce que j'ai compris, const_cast supprime le caractère constant d'un objet. Donc dans la ligne:
Code:
(const_cast<const T*>(right));}
On supprime le caractère const à right.
right est implicitement de type const à cause de const dans la déclaration d e l'opérateur == (ok?). Ensuite, on lui attribut le type const T* à right.
Pour moi, on fait une opération de const_cast, puis en fait l'opération inverse après.
En fait, je ne vois pas a quoi cette fonction sert, si ce n'est de lui supprimer le type const, pour appeler la fonction == (définie avant) qui prend l'argument const T*.
Merci