¿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
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