"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué \"cout\" imprime \"1\" cuando se utiliza un puntero de función sin paréntesis?

¿Por qué \"cout\" imprime \"1\" cuando se utiliza un puntero de función sin paréntesis?

Publicado el 2024-11-07
Navegar:734

Why Does \

¿Por qué "cout una función sin llamarla (no f() sino f;). Imprimir 1 siempre?"

En este código, el código intenta "llamar" una función llamada pr sin usar paréntesis. Sin embargo, esto en realidad no es llamar a la función. En cambio, pasa el puntero de función a la función cout. Cuando el puntero de función se convierte implícitamente en un valor bool, se evalúa como verdadero. Dado que verdadero es equivalente a 1 en C, la salida siempre es 1.

Para aclarar, las siguientes líneas del código proporcionado no invocan la función pr:

pr;
cout 

Para llamar realmente a la función pr, necesitarás usar paréntesis como pr().

Esto El comportamiento surge del hecho de que los punteros de función son implícitamente convertibles a bool. En C 11, es posible sobrecargar el operator

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3