Por que a eliminación pode funcionar con punteiros a const mentres free non?

Acabo de notar que os punteiros pasados ​​a delete poden ser const mentres que os que pasan a gratuíto non pode. Eso é realmente unha sorpresa para min.

E en C ++ unha sobrecarga ao operador delete debería ter unha sinatura como:

void operator delete(void* p);

Pero engadir unha const ao punteiro do parámetro non é válida. :

void operator delete(void const* p);

Alguén me pode dicir por que eliminar está deseñado deste xeito?

11
задан Unihedron 12 August 2014 в 17:06
поделиться