Den gleichen Wert der const-Variablen erhalten, auch nachdem Sie ihn über const_cast geändert haben

Betrachten Sie das folgende Code-Snippet:

int main()
{
    const int i=3;
    int *ptr;

    ptr=const_cast<int*>(&i);
    *ptr=5;

    cout<<"i= "<<i<<endl;  <------------------- statement 1
    cout<<"*ptr= "<<*ptr<<endl;  <------------- statement 2

    return 0;
}

Ich erhalte die Ausgabe als:

i= 3
*ptr= 5

http://ideone.com/Bvme6

Warum ist der Wert voni wird nicht durch Zeiger geändert?

Ich weiß, dass das Wegwerfen der Konstanz einer Variablen, die explizit als const deklariert ist, und das Ändern ihres Werts 'Undefiniertes Verhalten' ist. Ich bin neugierig zu wissen: Ersetzt ein Compiler-Optimierungsmechanismus die Variable im Programm durch den Wert? Dies bedeutet, dass die Anweisung 1 vom Compiler interpretiert wird als:

cout<<"i= "<<3<<endl;

Auch wenn die Aussage

ptr=const_cast<int*>(&i);    

wird ersetzt durch

 ptr=(int*)(&i);

Ich erhalte die gleiche Ausgabe:http://ideone.com/5lzJA

Antworten auf die Frage(5)

Ihre Antwort auf die Frage