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