Estoy seguro de que el siguiente código no debería compilarse. ¡Pero, en g ++, compila! Véalo compilar en http://codepad.org/MR7Dsvlz.¿Es un molde de (puntero a const) a (puntero a no const) inválido C++?
El código:
#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"
}
Es g ++ un error de compilación de este?
Si desea descartar constness (y está seguro de que está permitido) la forma idiomática de C++ para hacerlo es con 'const_cast (ptr1)' - aunque el molde de C también funcionará, como acaba de ver . –
Esto útil para leer: http://stackoverflow.com/questions/357600/is-const-cast-safe – Pubby