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

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

Susan Sarandon
Libérer: 2024-10-26 09:33:30
original
1003 Les gens l'ont consulté

Why Does

Pourquoi "cout 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'invoquent pas la fonction pr :

<code class="cpp">pr;
cout << pr; // output: 1
cout << *pr; // output: 1  (dereferencing the function pointer, which is still true)
cout << &pr; // output: 1 (address of the function, which is a non-zero value)</code>
Copier après la connexion

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

Ce comportement découle du fait que les pointeurs de fonction sont implicitement convertibles en bool. En C 11, il est possible de surcharger l'opérateur << pour que les pointeurs de fonction fournissent une sortie plus informative. Cependant, cela ne fonctionnerait toujours pas pour les fonctions ou les modèles de fonctions surchargés sans spécifier explicitement la surcharge souhaitée (généralement via un cast).

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!