ちなみに現実にはコンパイラは
const int I = 123;
これによりIが定数であるとして
以下の様なバイナリを吐いたと思われる。

 std::cout << I << std::endl;
 の部分が
 std::cout << 123 << std::endl;
 そして*ip = 234;の部分は謎のところの値を書き換え。

だから変わらないのだろう。