*` et `.*` Les opérateurs de pointeur vers membre fonctionnent ? " />
Comprendre les opérateurs pointeur vers membre -> et . en C
Malgré la documentation existante, comprendre la signification du pointeur -to-member opérateurs -> et . en C peuvent être insaisissables. vise à clarifier leur fonctionnalité et leur application dans divers scénarios.
Que sont -> et .?
Les opérateurs de pointeur vers membre sont utilisés pour accéder indirectement aux fonctions membres via des pointeurs ou des références à des objets -> déréférence un pointeur de fonction membre pour appeler une fonction membre du. objet référencé. déréférence un pointeur membre pour appeler une fonction membre de l'objet pointé.
Quand utiliser -> et .?
X* px = new X; pointer somePointer = &X::f; (px->*somePointer)(); // Calls px->f()
X& rx = x; pointer somePointer = &X::f; (rx.*somePointer)(); // Calls rx.f()
Exemple
Considérez le code suivant :
struct X { void f() {} void g() {} }; int main() { X x; void (X::*pointer)() = &X::f; // Call x.f() using .* (x.*pointer)(); X* px = new X; // Call px->f() using ->* (px->*pointer)(); return 0; }
Dans cet exemple, le pointeur déréférence le pointeur de fonction membre &X::f et l'assigne au pointeur. Ensuite, . est utilisé sur x pour appeler x.f(), et -> est utilisé sur px pour appeler px->f().
En comprenant la différence entre -> ; et . et lorsque chacun est approprié, les développeurs peuvent gérer efficacement les pointeurs de fonctions membres et les appels de fonctions indirectes en C .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!