const int* pc = new const int(3); // note the const
int* p = const_cast<int*>(pc);
*p = 4; // undefined behavior?
Insbesondere kann der Compiler immer die Haufen*pc
-allocated optimieren weg?
Wenn nicht, ist ein Versuch, *pc
über p
zu ändern, immer noch undefiniertes Verhalten - und wenn ja, warum?
Es ist eine interessante Frage, aber warum sollten Sie das tun? –
verwandt - http://Stackoverflow.com/questions/22798558/is-it-legal-to-modify-an-object-created-with-new-through-a-const-pointer –
const_cast sollte nur für die Schnittstelle verwendet werden mit Code, der const-incorrect ist, zum Beispiel eine Funktion, die keinen String ändert, aber immer noch char * anstelle von const char *. Jede andere Art der Verwendung, bei der Sie das Objekt ändern, ist ein nicht definiertes Verhalten – KABoissonneault