Maison > développement back-end > C++ > Pourquoi `bigCat.*pcat()` ne fonctionne-t-il pas lors de l'appel de fonctions membres via des pointeurs ?

Pourquoi `bigCat.*pcat()` ne fonctionne-t-il pas lors de l'appel de fonctions membres via des pointeurs ?

Linda Hamilton
Libérer: 2024-12-15 16:42:15
original
674 Les gens l'ont consulté

Why Doesn't `bigCat.*pcat()` Work When Calling Member Functions Through Pointers?

Appel de fonctions via des pointeurs de fonction membre

Lors de l'utilisation de pointeurs de fonction membre, il est crucial de garantir leur invocation correcte. Considérez l'exemple de code :

class cat {
public:
   void walk() {
      printf("cat is walking \n");
   }
};

int main(){
   cat bigCat;
   void (cat::*pcat)();
   pcat = &cat::walk;
   bigCat.*pcat();
}
Copier après la connexion

Cependant, une erreur se produit lors de la tentative d'appel de la fonction à l'aide de bigCat.*pcat();. En effet, des parenthèses supplémentaires sont nécessaires dans la syntaxe d'appel de fonction.

Syntaxe correcte pour l'appel des pointeurs de fonction membre

Pour appeler correctement les fonctions membres via les pointeurs de fonction membre, les parenthèses la priorité des opérateurs doit être respectée. La syntaxe correcte pour l'appel de fonction est :

(bigCat.*pcat)();
Copier après la connexion

Cela garantit que l'opérateur d'appel de fonction (()) a une priorité plus élevée que l'opérateur de liaison pointeur vers membre (.*). Les opérateurs unaires ont généralement priorité sur les opérateurs binaires. Par conséquent, les parenthèses sont nécessaires pour spécifier explicitement que la fonction membre walk() est appelée sur l'objet bigCat.

Avec la syntaxe corrigée, le code s'exécutera avec succès et affichera "cat is walking n" dans le console.

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