In C++ (GNU GCC g ++), il mio codice sta "chiamando" una funzione senza(). La funzione non funziona, ma compila ok.g ++ "chiama" una funzione senza parentesi (non f() ma f;). Perché restituisce sempre 1?
Più sorprendentemente, il codice restituisce sempre 1 ...
C'è una spiegazione?
mi aspettavo il nome della funzione di essere solo un puntatore normale, ma sembra che sia un po 'diverso ...
ho ricevuto tutti 1 solo per caso?
#include <iostream>
using namespace std;
void pr()
{
cout << "sth";
}
int main()
{
pr;
cout << pr; // output: 1
cout << *pr; // output: 1
cout << ≺ // output: 1
}
Cast implicito a bool di un indirizzo di funzione. –
Questo post può essere utile: http://stackoverflow.com/questions/2064692/how-to-print-function-pointers-with-cout – taocp
Conversione ** implicita ** al bool di un indirizzo di funzione. Non esiste una cosa come nel cast implicito. –