Maison >développement back-end >C++ >Pourquoi \'cout\' imprime-t-il \'1\' lorsqu'un pointeur de fonction est utilisé sans parenthèses ?
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 <p>Pour vraiment appeler la fonction pr, vous devrez utiliser des parenthèses comme pr().</p> <p>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 </p></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!