Maison > développement back-end > C++ > Comment fonctionnent les opérateurs de pointeur vers membre `->*` et `.*` de C ?

Comment fonctionnent les opérateurs de pointeur vers membre `->*` et `.*` de C ?

Susan Sarandon
Libérer: 2024-11-26 16:35:14
original
900 Les gens l'ont consulté

How Do C  's `->*` et `.*` Les opérateurs de pointeur vers membre fonctionnent ?
*` 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 .?

  • Utilisez ->* lorsque vous avez un pointeur vers un objet :
X* px = new X;
pointer somePointer = &X::f;
(px->*somePointer)(); // Calls px->f()
Copier après la connexion
  • Utilisez .* lorsque vous avez une référence à un objet :
X& rx = x;
pointer somePointer = &X::f;
(rx.*somePointer)(); // Calls rx.f()
Copier après la connexion
  • N'utilisez pas x.somePointer() ou px->somePointer() :Ces les syntaxes ne sont pas valides car elles tentent d'appeler des fonctions membres inexistantes.

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;
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal