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
864 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!

source:php.cn
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