Maison > développement back-end > C++ > le corps du texte

Pointeurs de fonction membre C : quand utiliser `->*` par rapport à `.` ?

DDD
Libérer: 2024-11-17 14:00:04
original
186 Les gens l'ont consulté

C   Member Function Pointers: When to Use `->*` contre `.` ?
*` contre `.` ? " />

Pointeurs de fonction membre en C : démystifier >* et .

De nombreux programmeurs trouvent les opérateurs de pointeur vers membre > et . en C déroutant. Cet article clarifie leur utilisation et quand les utiliser par rapport aux traditionnels > et ..

Comprendre >* et .

>. ; et . sont des opérateurs pointeur vers membre qui vous permettent d'accéder aux fonctions membres via des pointeurs. Ces opérateurs sont utilisés lorsque vous devez lier dynamiquement une fonction membre à un objet.

    <.>
  • >* : Cet opérateur est utilisé lorsque le pointeur et l'objet sont du même type.
  • .* : Cet opérateur est utilisé lorsque le pointeur est d'un type dérivé, alors que l'objet est du type de base.

Exemple :

Considérons la classe suivante :

struct X
{
   void f() {}
   void g() {}
};
Copier après la connexion
Pour créer un pointeur vers la fonction membre f, on peut utiliser le typedef :

typedef void (X::*pointer)();
Copier après la connexion
Maintenant, on peut attribuer f au pointeur somePointer :

pointer somePointer = &X::f;
Copier après la connexion
Pour appeler le membre fonction utilisant le pointeur, nous avons besoin d'un objet :

X x;
(x.*somePointer)(); // Calls x.f()
Copier après la connexion
Si x est un pointeur vers un objet, nous devons utiliser >* à la place :

X* px = new X;
(px ->* somePointer)(); // Calls px->f()
Copier après la connexion

Utilisation Scénarios :

Vous devez généralement utiliser >

et . dans les scénarios où vous devez transmettre des fonctions membres comme arguments aux fonctions ou les stocker dans des conteneurs. Ces opérateurs fournissent un moyen de dissocier l'appel de fonction de l'instance d'objet spécifique.

Conclusion :

Les opérateurs pointeur vers membre >

et . en C sont des outils puissants qui permettent une liaison de fonctions dynamique. En comprenant leur utilisation et quand les utiliser par rapport aux méthodes traditionnelles > et ., vous pouvez améliorer la flexibilité et la réutilisabilité de votre code.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal