Le langage C++ définit l'opérateur flèche ( ->
) comme synonyme de déréférencement d'un pointeur, puis utiliser la fonction .
-opérateur sur cette adresse.
Par exemple :
Si vous avez un objet, anObject
et un pointeur, aPointer
:
SomeClass anObject = new SomeClass();
SomeClass *aPointer = &anObject;
Pour pouvoir utiliser l'une des méthodes de l'objet, il faut déréférencer le pointeur et appeler une méthode à cette adresse :
(*aPointer).method();
Ce qui pourrait être écrit avec l'opérateur flèche :
aPointer->method();
La principale raison de l'existence de l'opérateur flèche est qu'il raccourcit la saisie d'une tâche très courante et qu'il est également assez facile d'oublier les parenthèses autour du déréférencement du pointeur. Si vous oubliez les parenthèses, l'opérateur .- se liera plus fortement que l'opérateur * et fera en sorte que notre exemple s'exécute comme suit :
*(aPointer.method()); // Not our intention!
D'autres réponses ont également mentionné que les opérateurs C++ peuvent être surchargés et que ce n'est pas si courant.