Sono sicuro che il seguente codice non dovrebbe essere compilato. Ma, in g ++, lo fa compilare! Vedi compilare a http://codepad.org/MR7Dsvlz.Un cast da (puntatore a const) a (puntatore a non-const) C++ non valido?
Il codice:
#include <iostream>
using namespace std;
int main() {
int x = 32 ;
// note: if x is, instead, a const int, the code still compiles,
// but the output is "32".
const int * ptr1 = & x ;
*((int *)ptr1) = 64 ; // questionable cast
cout << x ; // result: "64"
}
è G ++ per errore compilando questo?
Se vuoi eliminare la costanza (e sei sicuro che sia consentita) il modo C++ idiatico per farlo è con 'const_cast (ptr1)' - anche se il cast di C funzionerà anche, come hai appena visto . –
Questo utile da leggere: http://stackoverflow.com/questions/357600/is-const-cast-safe – Pubby