"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi \"cout\" imprime-t-il \"1\" lorsqu'un pointeur de fonction est utilisé sans parenthèses ?

Pourquoi \"cout\" imprime-t-il \"1\" lorsqu'un pointeur de fonction est utilisé sans parenthèses ?

Publié le 2024-11-07
Parcourir:499

Why Does \

Pourquoi "coute-t-il une fonction sans l'appeler (pas f() mais f;). Imprimer 1 toujours ?"

Dans ce code, le code essaie "d'appeler" une fonction nommée pr sans utiliser de parenthèses. Cependant, cela n’appelle pas réellement la fonction. Au lieu de cela, il passe le pointeur de fonction vers la fonction cout. Lorsque le pointeur de fonction est implicitement converti en valeur booléenne, il est évalué comme vrai. Puisque true équivaut à 1 en C , la sortie est toujours 1.

Pour clarifier, les lignes suivantes du code fourni n'appellent pas la fonction pr :

pr;
cout 

Pour véritablement appeler la fonction pr, vous devrez utiliser des parenthèses comme pr().

Ceci le comportement vient du fait que les pointeurs de fonction sont implicitement convertibles en bool. En C 11, il est possible de surcharger l'opérateur

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3