Funções de impressão em cpp [duplicado]

Oct 25 2020

Por que sempre que imprimo uma função em cpp, ela imprime 1. ie

#include <iostream>
using namespace std;
void f1(){
   cout<<"called function f";
}
int f2(){
   cout<<"called f2";
   return 1;
}
int main(){
   cout << f2 <<endl; // prints 1
   cout << f1 <<endl; // still prints 1
}

Só estou me perguntando por que ele imprime 1.

Obrigado pela ajuda

Respostas

1 MikeCAT Oct 25 2020 at 20:20

Parece que está julgando se as funções (convertidas em ponteiros para funções) não são nulas, retornando truee imprimindo truecomo 1. Isso pode ser confirmado adicionando cout << std::boolalpha;e vendo o resultado alterado para true.

#include <iostream>
using namespace std;
void f1(){
   cout<<"called function f";
}
int f2(){
   cout<<"called f2";
   return 1;
}
int main(){
   cout << std::boolalpha;
   cout << f2 <<endl; // prints true
   cout << f1 <<endl; // also prints true
}