鉴于此代码(从我的最后一个职位here):Const_cast允许将常量修改为导致const的路径?
const int j = 5; // constant object
const int *p = &j; // `p` is a const access path to `j`
int *q = const_cast<int *>(p); // `q` is a non-const access path to `j`
*q = 10;
cout << *q << endl;
输出是:10
是它想是这样?我认为这个代码应该导致 一个未定义的行为,因为j
是一个常量。我错了吗 ?
感谢
未定义的行为。 – Mahesh 2012-07-14 14:49:02
所以你真正的问题是“是否允许一个未定义行为的程序向控制台输出'10 \ n'?答案是*是*。 – 2012-07-14 14:52:54
您认为这导致了未定义的行为。它做了。哪里有问题? – 2012-07-14 14:55:02