Ho definito alcune funzioni e stampare il loro indirizzo come questo:C++ puntatore a funzione non è cambiato
#include<iostream>
#include <string>
using std::cout;
std::string func()
{
return "hello world\n";
}
int func2(int n)
{
if (n==0)
{
cout << func2 << std::endl;
return 1;
}
cout << func2 << std::endl;
return n + func2(n - 1);
}
//================================================
int main()
{
int (*fun)(int) = func2;
cout << fun;
cout << std::endl << func2(3);
}
Quando stampo il nome della funzione (indirizzo) che tutti Stampa 1
sul mio compilatore (Mingw gcc 4.8) .
OK o dovrebbe essere diverso?
Supponendo che la dimensione di un puntatore a funzione non sia maggiore della dimensione di 'unsigned long long int'. Dovresti anche aggiungere 'const' al cast per prevenire incidenti. –
Sì, beh ... in C++ 11 lungo è almeno 64 bit. – juzzlin
Quindi? Cosa succede se i puntatori sono 128 bit in futuro? Una volta erano solo a 16 bit. –