Invocation de pointeur de fonction membre
Lorsque vous travaillez avec des pointeurs de fonction membre, l'exécution de la fonction via le pointeur s'avère souvent difficile. Examinons ce problème plus en détail.
Dans l'extrait de code fourni, une tentative est faite pour invoquer la fonction membre walk de la classe cat via le pointeur de fonction membre pcat. Cependant, la compilation du code ne parvient pas à cause d'une syntaxe incorrecte.
La racine du problème réside dans la priorité des opérateurs. L'opérateur d'appel de fonction (()) a une priorité plus élevée que l'opérateur de liaison pointeur vers membre (.*). De plus, les opérateurs unaires ont priorité sur les opérateurs binaires. Pour résoudre ce problème, des parenthèses supplémentaires sont requises, comme indiqué ci-dessous :
(bigCat.*pcat)(); ^ ^
En mettant l'appel de fonction entre parenthèses, nous nous assurons qu'il est exécuté en premier, suivi de la liaison du pointeur de fonction membre pcat à l'objet chat bigCat. Cet ajustement permet l'invocation réussie de la fonction membre walk.
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!