"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que \"cout\" imprime \"1\" quando um ponteiro de função é usado sem parênteses?

Por que \"cout\" imprime \"1\" quando um ponteiro de função é usado sem parênteses?

Publicado em 2024-11-07
Navegar:764

Why Does \

Por que "cout uma função sem chamá-la (não f() mas f;). Imprimir 1 sempre?"

Neste código, o código tenta "chamar" uma função chamada pr sem usar parênteses. No entanto, isso não é realmente chamar a função. Em vez disso, ele está passando o ponteiro de função para a função cout. Quando o ponteiro de função é convertido implicitamente em um valor bool, ele é avaliado como verdadeiro. Como true é equivalente a 1 em C , a saída é sempre 1.

Para esclarecer, as seguintes linhas do código fornecido não estão invocando a função pr:

pr;
cout 

Para realmente chamar a função pr, você precisaria usar parênteses como pr().

Isso o comportamento decorre do fato de que os ponteiros de função são implicitamente conversíveis em bool. Em C 11, é possível sobrecarregar o operador

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3